php - Laravel 中多个条件的多次急切加载
问题描述
我正在使用 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 子句。
我相信另外两个也是未知的列。
任何想法,将不胜感激。
解决方案
它看起来有点难看,但你可以使用闭包:
$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))
为了修改这些约束的顺序,您需要根据您的要求移动闭包和约束,但据我所知,这应该这样做。
推荐阅读
- java - java.lang.ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl ,当抛出 BadRequestException
- java - 使用 Android Studio 中 EditTexts 中的值更新 mySql 表的所有列
- node.js - 使用 NodeJS / Express 和 HTTPS 时 socket.io 中出现 CORS 错误
- apache-spark - 错误:调用 fit() 函数时“Python worker 无法连接回来”
- c# - How do I display details from single column in a modal in Angular 7?
- reactjs - aws amplify auth 自定义注册无法映射未定义
- javascript - 使用变量按值选择jquery集合中的元素
- c# - SharePoint 更新列表项
- python - 从多个文本苍蝇中提取,附加结果
- jbpm - 如何根据用户任务结果设置 BPMN 流程变量?