sql—如何使用laravel的eloquent加载相同的列名?

w80xi6nr  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(353)

当我试图生成一个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'])

我觉得这是一个缺陷或地方,以改善雄辩

jdg4fx2g

jdg4fx2g1#

好吧,我找到了快速的方法。
首先我发现这个代码是有效的:

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

很有魅力

相关问题