database - Laravel 雄辩的选择数据
问题描述
我想构建一个雄辩的查询来构建这个输出:
SELECT * FROM `banners` WHERE (`channel` = "en-us" OR `channel` IS NULL) AND (`language` = "en" OR `language`IS NULL) AND (`country` = 'us' OR `country` IS NULL) AND `category_id` = "3954" AND `valid_from` <= "2018-10-03 13:20:52" AND `valid_to` >= "2018-10-03 13:20:52" OR `valid_to` IS NULL
我与“或”和“和”条件作斗争。
这应该意味着valid_from、valid_to、channel、language必须有值,但在某些情况下“channel”和“language”可以为null。
请帮我。提前致谢!
解决方案
这不是您发布的查询的确切输出,因为我在查询的右括号中看到了一些语法错误。所以我不能完全理解你的查询。
但是,既然你已经指出你正在努力理解如何使用,and
我认为这可能会有所帮助。or
query builder
DB::table('banners')
->where([ // -|
['valid_from', '<=', '2018-10-03 13:20:52'], // AND |
['valid_to', '>=', '2018-10-03 13:20:52'], // AND |
['channel', 'en-us'], // AND | OR
['language', 'en'] // AND |
])->orWhere([ // _|____
['valid_from', '<=', '2018-10-03 13:20:52'], // AND | OR
['valid_to', null] // AND _|____
])->orWhereNull('channel') // _| OR
->orWhereNull('language') // _| OR
->get();
祝你好运
推荐阅读
- python - Problem in reshaping train and validation data for 1D CNN
- firebase - Unity Editor 无法连接到 Firebase 身份验证
- reactjs - 为什么 React Js 中的 props 中用户数据为空?
- visual-studio - vc++ 迁移,从 Visual Studio (vc++) 6 到 Visual Studio 2019(vc++)
- azure-devops - 是否可以在 Azure DevOps 中的每 4 次提交时触发自动构建?
- javascript - JavaScript 使用 Next.js 路由器保留查询格式
- javascript - Vue 3 模板根只需要一个元素
- firebase - 在firebase中查询多个字段的最佳方法
- c# - 如何制作类似列表的结构
? - scala - 如何在 scala 中使用超过 22 个参数进行字符串插值