BFWSOA框架中如何对模型进行关联一对多一对一多对多

BFWSOA框架中如何对模型进行关联一对多一对一多对多

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",
]

];

然后查询的时候加上relate

Model_Member::getInstance()->Relate()->Select();

Relate可以指定关联模型,及关联模型的分页大写,字段信息

比如我们要获取用户的所有角色中前三个的名称

Model_Member::getInstance()->Relate(['Group'],3,"groupname")->Select();

考虑到性能,在1对多查询的时候不建议设置太大的数量。

那么关联查询完了,如何关联删除呢?

也很简单

Model_Member::getInstance()->Relate()->Delete(1);

这样就删除了用户 id为1的用户表,用户权限表、用户信息附表、地址表中的相关信息




{{collectdata}}

网友评论0