如何使用 Laravel 的 eloquent 急切加载相同的列名?

How to eager load same column names using Laravel's eloquent?

我 运行 在尝试生成 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

中的错误或需要改进的地方

好的,我知道了如何快速做到这一点。

首先我发现这段代码有效:

 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'])

很有魅力