【发布时间】:2021-04-18 06:57:43
【问题描述】:
我希望在 Laravel Eloquent 中转换这样的 SQL 查询。 这个查询适用于 MariaDb,但我不知道其他引擎(可能是它没有实现的原因):
| id | year | country | enabled |
|---|---|---|---|
| 0 | 2000 | "France" | 0 |
| 1 | 2001 | "Spain" | 0 |
| 2 | 2002 | "France" | 1 |
| 3 | 2003 | "Germany" | 1 |
SELECT id FROM my_db.countries WHERE (name, enabled) IN (("France", 1), ("Spain", 0));
这将返回 1 和 2。
Eloquent 可以做到这一点(如此处建议的那样:laravel whereIn multiple columns,但它不会返回预期的结果:
DB::table('countries')->select('id')->whereIn('name', ["france", "Spain"])->whereIn('enabled', [0, 1 ])->所有();
这将返回 0、1 和 2。
我尝试调整 Illuminate/Database 库以满足我的需求,但数据绑定开始变得非常复杂。
我设法通过 whereRaw 查询实现了它,但它对于生产代码来说还不够干净,因为没有数据绑定(值显示为 ->toSql())。
有人有想法吗?
【问题讨论】:
标签: laravel laravel-query-builder