yii2下的with使用方法

原创
小哥 2年前 (2023-05-17) 阅读数 109 #大杂烩

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 里面只有一个值的话效率就还不如直接 = 了。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门