考虑以下代码:
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 列表中。如果我在那里包含它,那么它会抛出“列未找到”的错误。Eloquent 不够聪明,无法理解我意味着关系而不是列。
是否有可能指定应从用户(user)以及文章(article)返回哪些列?
select
中没有user
并不重要。这是两个独立的查询,所以你选择什么并不重要,只要包括所有涉及到的键(PK,FK)- 就像@lagbox已经说过的那样。 - Jarek Tkaczyk