【问题标题】:How to eager load same column names using Laravel's eloquent?如何使用 Laravel 的 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 中的一个错误或需要改进的地方

【问题讨论】:

    标签: sql laravel eloquent orm eager-loading


    【解决方案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'])
    

    像魅力一样工作

    【讨论】:

      猜你喜欢
      • 2017-01-14
      • 2019-01-03
      • 2020-01-04
      • 1970-01-01
      • 2014-11-09
      • 2021-12-17
      • 2015-02-28
      • 1970-01-01
      • 2013-06-10
      相关资源
      最近更新 更多