【发布时间】:2014-12-30 09:10:58
【问题描述】:
考虑这段代码:
Articles
::select('article_id', 'article_text') //This one does not work as expected
->with([
'user' => function($q){
$q->select('user_id', 'user_name'); // This one works fine
}
])
->get();
在 Eloquent 中构建查询时,我们可以使用 ->with() 来检索关联的模型。我们还可以附加 ->select() 来确定应该从关联模型中选择哪些列。但是,看起来我们失去了指定应该从我们查询的基本模型中选择哪些列的可能性。
在本例中,由于第一个::select,返回的最终结果不包括user,因为它不包括在::select 列表中。如果我在其中包含它,那么它会引发关于 column not found 的错误。 Eloquent 不够聪明,无法理解我的意思是关系,而不是列。
是否可以指定应该从user 和article 返回哪些列?
【问题讨论】:
-
你的假设有点错误。第一个
select中没有user并不重要。这些是 2 个单独的查询,所以你选择什么并不重要,只要你包括所有涉及的键(PK、FK)——就像@lagbox 已经说过的那样。
标签: laravel laravel-4 eloquent