yii2中多表关联查询(hasOne、hasMany、join、joinwith,with)
控制器:joinwith和with都是即时操作
转:https://blog.csdn.net/echojson/article/details/80141614
模型中使用:
关联结果缓存
hasOne: 一对一
hasMany :一对多
joinwith:
我们都知道可以用join on来写多个表之间的关联。先看看yii2中joinWit的声明
joinWith( $with, $eagerLoading = true, $joinType = 'LEFT JOIN' )
- $with 数据类型为字符串或数组,
如果为字符串,则为模型中定义的关联的名称(可以为子关联)。 //也是模型model中以getXXX格式定义的关联名称
如果为数组,键为model中以getXXX格式定义的关联,值为对这个关联的进一步的回调操作。 - $eagerLoading 是否加载在$with中关联的模型的数据。
- $joinType 联接类型,可用值为:LEFT JOIN、INNER JOIN,默认值为LEFT JOIN
- // 使用inner join 连接order中的 books关联和customer关联。
- // 并对custmer关联再次进行回调过滤:找出24小时内注册客户包含书籍的订单
- $orders = Order::find()->innerJoinWith([
- 'books',
- 'customer' => function ($query) {
- $query->where('customer.created_at > ' . (time() - 24 * 3600));
- }
- ])->all();
- // 使用left join连接 books关联,books关联再用left join 连接 author关联
- $orders = Order::find()->joinWith('books.author')->all();
https://www.cnblogs.com/yiifans/p/3786374.html
with和joinwith区别

浙公网安备 33010602011771号