使用Thinkphp6开发项目,一对一关联查询应该是使用比较多的了,下面做一个简单的记录:
首先是栏目表:admin_category
其次是文章表:article
首先是两个模型:
做关联查询的模块,可以是空模型:
查询文章,关联栏目:
关联查询:hasOne
hasOne('关联模型类名', '外键', '主键');
关联模型类名(必须):关联模型名
外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id
主键:当前模型主键,默认会自动获取也可以指定传入
理解:在进行建表的时候,例如: 主表:article 字段:id cate_id title 附表:category 字段:cate_id title 通过cate_id对表进行关联,在进行查询的时候,写法是这样的: hasOne(category::class,cate_id(外键)) 但是我们通常建表会这样建立: 主表:article 字段:id cid title 附表:category 字段:id title 这样建表,cid指向的就是附表的主键id,当前模型的主键就是cid。主键:是指一列或多列,其值能够唯一标识某一行。 hasOne(category::class,id,cid)
通过这样查询,我们获得的数组是一个二维数组,其中category中包括完整的数据结构,我们只需要某几个字段,可以设置闭包约束:
$users = User::with(['profile' => function($query) { $query->field('id,user_id,name,email'); }])->select();
附表关联主表做查询:例如:我想查询每一个栏目下都有哪些文章
使用:belongsTo进行关联查询
belongsTo('关联模型','外键', '关联主键');
关联模型(必须):关联模型类名
外键:当前模型外键,默认的外键名规则是关联模型名+_id
关联主键:关联模型主键,一般会自动获取也可以指定传入
示例:
具体查询方法:
到此一对多的基础用法就完了。