【问题标题】:Multiple eager loading with multiple conditions in LaravelLaravel 中多个条件的多次急切加载
【发布时间】:2020-04-02 01:48:40
【问题描述】:

我使用的是 Laravel 5.7 版本。

我想在 where 子句中使用多个急切加载。

我已经简化了 laravel。

$query = Employee::with(['User','Company','Client'])
                  ->select(*)->whereRaw("(User.id <> 0 and Company.name LIKE %A%) OR Client.id <> 0)")

我正在使用预先加载来避免 JOIN 语句。

但问题是错误消息说 User.id 是 where 子句中的未知列。

我相信另外两个也是未知列。

任何想法将不胜感激。

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    看起来有点难看,但你可以使用闭包:

    $query = Employee::with('User', function ($inner) {
        $inner->where('id', '!=', 0);
    })->with(['Company', 'Client'])
    ->where(function (Builder $sub) use($companyName) {
        $sub->where('Company.name', 'like', $companyName)
            ->orWhere('Client.id', '!=', 0);
    })->get();
    

    这将检索:

    employees where (user.id != 0 AND (company.name LIKE :companyName OR client.id != 0))
    

    为了修改这些约束的顺序,您需要根据您的要求移动闭包和约束,但据我所知,这应该这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 2019-07-08
      • 2021-12-01
      • 2013-04-13
      相关资源
      最近更新 更多