Yii2从连接表中添加列而不使用asArray方法

时间:2017-09-14 11:51:17

标签: php join yii2

我试图从连接表中获取我的选择结果列。我的查询如下:

$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()方法添加列的方法?

1 个答案:

答案 0 :(得分:0)

您使用joinWith()方法而没有第二个参数$eagerLoading。如果$eagerLoading参数为true,则该方法还将对指定的关系执行急切加载,这相当于使用指定的关系调用with()。要解决您的问题,请在您的false函数中添加第二个参数joinWith()

Yii2 ActiveQuery

中的更多内容