BFWSOA框架中如何对模型进行关联一对多一对一多对多
在建立数据库的时候存在一对多、一对一、多对多的关联,那么怎么通过bfwsoa框架进行关联查询呢?
今天我来带大家认识一下bfwsoa的模型关联。
假设现在有几个表,用户表(Member),用户地址表(Address),用户信息附表(UserInfo),用户角色表(MemberGroup),角色表(Group),
其中用户表与用户信息附表是1对1的关联
用户表与用户地址表是1对多的关联
用户表与用户角色表及角色表是多对多的关联,那么在bfwsoa模型中如何体现呢?
BFWSOA的多表关联其实在模型中设置一下就ok了,设置 $_relatekey
首先是一对一设置
protected $_relatekey = [
[
//本表主键
"key" => "id",
//关联表模型命名空间
"dom" => "\\App\\Admin",
//关联表模型
"model" => "UserInfo",
//1对1关联
"way" => "1:1",
//关联表主键
"foreignkey" => "id",
]
];
然后是1对多
protected $_relatekey = [
[
//本表键
"key" => "id",
//关联表模型命名空间
"dom" => "\\App\\Admin",
//关联表模型
"model" => "Address",
//1对1关联
"way" => "1:n",
//关联表主键
"foreignkey" => "userid",
]
];
最后是多对多
protected $_relatekey = [
[
//本表主键
"key" => "id",
//关联表模型命名空间
"dom" => "\\App\\Admin",
//本表主键在中间表中名称
"midkey" => "memberid",
//关联表中在中间表中名称
"midforeignkey" => "groupid",
//关联中间表模型
"midmodel" => "MemberGroup",
//多对多关联表模型
"model" => "Group",
//多对多关联
"way" => "n:n",
//关联表主键
"foreignkey" => "id",
]
];
Model_Member::getInstance()->Relate()->Select();
Relate可以指定关联模型,及关联模型的分页大写,字段信息比如我们要获取用户的所有角色中前三个的名称
Model_Member::getInstance()->Relate(['Group'],3,"groupname")->Select();
考虑到性能,在1对多查询的时候不建议设置太大的数量。
那么关联查询完了,如何关联删除呢?也很简单
Model_Member::getInstance()->Relate()->Delete(1);
网友评论0