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
  1. // 使用inner join 连接order中的 books关联和customer关联。
  2. // 并对custmer关联再次进行回调过滤:找出24小时内注册客户包含书籍的订单
  3. $orders = Order::find()->innerJoinWith([
  4.     'books',
  5.     'customer' => function ($query) {
  6.         $query->where('customer.created_at > ' . (time() - 24 * 3600));
  7.     }
  8. ])->all();
  9. // 使用left join连接 books关联,books关联再用left join 连接 author关联
  10. $orders = Order::find()->joinWith('books.author')->all();

https://www.cnblogs.com/yiifans/p/3786374.html

with和joinwith区别

转:https://www.cnblogs.com/jimz/p/9974456.html

posted @ 2019-10-17 16:52  星云惊蛰  阅读(636)  评论(0)    收藏  举报