thinkphp使用join 关联查询和模型关联查询的区别
对于关联查询,我用的更多的都是 一对一 一对多 多对多的 关联查询 。
而他们都有一个很大的问题,当出现多表联查的时候写起来不太灵活,这确实是一个大问题,虽然说代码写起来很规范,
但有个问题就是代码量太多了 。 而 tinkphp 的join 查询是原生查询
$archives = (new Archives())->alias('a')->with(['category'])->join($model->tablename.' x','a.id=x.id','left')->field('a.*,x.id as xid,'.$extField);
像这么一段join查询 对于小白是很难理解这到底是个什么意思
那么首先 我们先 分析一下
$archives = (new Archives())->alias('a')->with(['category']);
将这个
Archives
模型定义一个别名为A 并且关联查询
category
紧接着我们继续观察
join($model->tablename.' x','a.id=x.id','left')
将
$model->tablename
这个表 快速定义别名为 x X前面加个空格是为了区分表名 和 别名
'a.id=x.id','left'
a表也就是
Archives()
模型 A表的id =
$model->tablename
x 表的 id
->field('a.*,x.id as xid,'.$extField);
查询a表所有字段 并且将 x 表的id 重命名为 xid 防止ID重复
对于join查询的记录到此为止
本文链接:https://yun.ha.cn/post/20.html 转载需授权!