yii2下的with使用方法
原创with关联查询
只关联一个表
->with();
//或
->with([]);
关联多个表
->with([,]);
对关联表添加筛选条件,使用闭包函数
->with([, => function(ActivityQuery $query) {
$query->where();
}]);
对关联表添加筛选条件,且使用了外部变量
$param = ;
->with([ => function(ActivityQuery $query) use($param) {
$query->where();
}]);
多级关联一:
->with([goodsSku]);
//模型中
public function getGoodsSku()
{
return $this->hasOne(GoodsSku::className(),[goods_sku_code => goods_sku_code])->with([category,categoryItem]);
}
多级关联二:
->with([goodsSku.category]);
多及关联三:
->with([goodsSku => function(ActivityQuery $query) {
$query->with([category]);
}]);
和laravel的用法一样的。如果打印SQL就会发现 with
其实是利用外层查询结果中关联字段,以 in
条件查询的。也就是分两次查询的。
建议只在外层查询多个的情况下使用。如外层只查了一个 with
里面多个,最好还是分开两次查吧,不要使用 with
。因为 in
里面只有一个值的话效率就还不如直接 =
了。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
上一篇:Linux安装MySQL 下一篇:PHP设置时区相关方法