我试图从连接表中获取我的选择结果列。我的查询如下:
$query = MediaLibrary::find()->select([
'media_library.*',
'category_name' =>'ctg.name',
'category_id' =>'ctg.id',
'entity_name' =>'ent.name',
'entity_id' =>'ent.id',
'category_alias' =>'ctg.alias',
])->joinWith([
'mediaLibraryCategory' => function ($q) {
$q->from(MediaLibraryCategory::tableName().' ctg');
},
'mediaLibraryEntity' => function ($q) {
$q->from(MediaLibraryEntity::tableName().' ent');
}
])->asArray();
它有效,好吧。但问题是我不想从另一个表中获取该数据数组(asArray()方法)。但是如果我删除那个方法 - 其他表中的列就不见了。
我做错了什么?有没有asArray()方法添加列的方法?
答案 0 :(得分:0)
您使用joinWith()
方法而没有第二个参数$eagerLoading
。如果$eagerLoading
参数为true,则该方法还将对指定的关系执行急切加载,这相当于使用指定的关系调用with()。要解决您的问题,请在您的false
函数中添加第二个参数joinWith()
。