为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 中具有多个条件的多个预加载

Laravel 中具有多个条件的多个预加载

PHP
繁花如伊 2022-12-03 10:43:04
我正在使用 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 is unknown column in where 子句。我相信另外两个也是未知的专栏。任何想法,将不胜感激。
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

它看起来有点丑陋,但你可以使用闭包:


$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))

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


查看完整回答
反对 回复 2022-12-03
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信