TP中的模型关联的多对多关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP中的模型关联的多对多关系相关的知识,希望对你有一定的参考价值。
TP5中完全推翻了3.2的做法,不再使用原来的查询语句,比如select,join之类的条件查询。而是使用模型关联,一对多和多对多的关系进行关联。方便用户调用数据,减少代码的编写量。
下面直接开始上代码:
role.php(model层)
class Role extends Model{
public function Nodes()
{
return $this->belongsToMany(‘Node‘,‘RoleAuthorization‘,‘node_id‘,‘role_id‘);
}
}
user.php(model层)
class User extends Model{
public function Roles(){
return $this->belongsToMany(‘Role‘,‘RoleUser‘,‘pms_role_id‘,‘pms_user_id‘);
}
}
另外几张表只需要写一个模型就OK,不用写任何东西,它会自动调用。(node,roleauthorization,roleuser)
在控制器调用model,直接实例化,调用你写的方法
$user_model = Loader::model(‘User‘);
$user_result = $user_model->get(1);
echo $user_result.‘<br/>‘;
$data = $user_result->Roles;
foreach ($data as $key => $value) {
echo $value[‘id‘].‘<br/>‘;
echo $value[‘name‘].‘<br/>‘;
// $aa = $data->Nodes;
// dump($value->Nodes);
foreach ($value->Nodes as $pk=>$pv){
echo $pv->node."<br/>";
}
}
首先,字段pms_role_id,pms_user_id字段在中间表roleuser里,注意字段的顺序,根据你关联表的顺序来进行写的,顺序错误数据就会不对。node_id,role_id字段在roleauthorization表里。
本文出自 “PHP,TP” 博客,转载请与作者联系!
以上是关于TP中的模型关联的多对多关系的主要内容,如果未能解决你的问题,请参考以下文章