我无法使用“多对多多样性关系”在急切加载中选择列
我的要求是:
Etape::with(array('entreprises'=> function($query) {
return $query->select('entreprises.id');
}))->get();
关系定义如下
class Etape extends Eloquent {
public function entreprises()
{
return $this->morphedByMany('Entreprise', 'etapeable')->withPivot('date');
}
}
class Entreprise extends Eloquent {
public function etapes() {
return $this->morphToMany('Etape', 'etapeable')->withPivot('date')->orderBy('date');
}
}
执行这些SQL请求:
SELECT * FROM `etapes` WHERE `etapes`.`deleted_at` IS NULL
SELECT `entreprises`.`id`, `entreprises`.*, `etapeables`.`etape_id` as `pivot_etape_id`, `etapeables`.`etapeable_id` as `pivot_etapeable_id`, `etapeables`.`date` as `pivot_date` FROM `entreprises` inner join `etapeables` on `entreprises`.`id` = `etapeables`.`etapeable_id` WHERE `entreprises`.`deleted_at` IS NULL and `etapeables`.`etape_id` in ('12', '13', '14') and `etapeables`.`etapeable_type` = 'Entreprise'
如您所见,第二个请求以:
开头SELECT `entreprises`.`id`, `entreprises`.*
因此不考虑选择方法。这是一个Laravel错误还是有其他解决方案来解决这个问题?
答案 0 :(得分:1)
Laravel不支持(4. *和5. *)。
看看at the issue创建的@edi9999:泰勒奥特威尔所说的:
这是一个已知问题。我们不允许"选择"关于多人关系。
有another issue(2013年底创建)Taylor说
我们目前不支持限制这些关系的选择,因为如果它没有正确完成,它可能会破坏查询。如果您愿意,可以在检索数据后删除列。