如何使用 Laravel 的 eloquent 加载相同的列名?
Posted
技术标签:
【中文标题】如何使用 Laravel 的 eloquent 加载相同的列名?【英文标题】:How to eager load same column names using Laravel's eloquent? 【发布时间】:2020-09-29 05:08:57 【问题描述】:在尝试生成 API 响应时,我又一次遇到了这个问题
最基本的代码是这样的:
// This works, but its incomplete
Car::with(['user:id,name', 'factory', 'producer'])
// This does not work, ambiguous column names SQL error
Car::with(['user:id,name', 'factory:id,name', 'producer'])
我觉得这是 Eloquent 中的一个错误或需要改进的地方
【问题讨论】:
【参考方案1】:好的,我知道如何快速做到这一点。
首先我发现这段代码有效:
Car::with(['user' => function($q)
$q->selectRaw(DB::raw("users.id, users.name"));
, 'factory' => function($q)
$q->selectRaw(DB::raw("factories.id, factories.name"));
, 'producer'])
然后我想删除构建器的原始部分,我想知道这是否以类似的方式工作,所以我最终得到:
Car::with(['user:users.id,users.name', 'factory:factories.id,factories.name', 'producer'])
像魅力一样工作
【讨论】:
以上是关于如何使用 Laravel 的 eloquent 加载相同的列名?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 eloquent 在 laravel 中编写多个连接
如何在 Laravel 5.8 中使用 Eloquent 进行查询?