我有以下内容
return DB::table('recipe_symbols')
->where('symbol_id', 8)
->get(['recipe_id']);
它工作得很好。现在我有以下返回更过滤的结果
return DB::table('recipe_symbols')
->where('symbol_id', 8)
->where('symbol_id', 16)
->get(['recipe_id']);
我没有得到任何结果,即使 symbol_id 为 8 和 16 的行存在。我尝试了原始查询,但仍然是同样的问题。
出了什么问题?我想要实现的是根据用户选择的符号通过 symbol_id
获取食谱。
我尝试了 whereIn()
但这会带回具有特定 symbol_id
但没有其他的食谱。例如,它带来了 2 个食谱,其中一个的 symbol_id
仅为 8,第二个有 8 和 16。我需要获取所有 symbol_id
= 8 的食谱和 16,没有别的。
编辑*** 数据库结构
recipe_symbols_table
----------------------
|id | recipe_id | symbol_id |
-----------------------------
|1 | 2 | 8
|2 | 2 | 16
|3 | 3 | 8
|4 | 3 | 16
|5 | 4 | 8
|6 | 4 | 30
|7 | 5 | 8
|8 | 5 | 28
|9 | 6 | 8
|10 | 6 | 31
|11 | 7 | 8
|12 | 7 | 18
编辑***
$sql = 'SELECT * FROM sie_hp_cookbook_recipes_symbols WHERE symbol_id=8 and symbol_id=16';
$qry = DB::select($sql);
最佳答案
以下给出了前两个结果(2 和 3)。希望这对您有所帮助!
SELECT a.`recipe_id`
FROM `recipe_symbols_table` a
INNER JOIN `recipe_symbols_table` b
ON a.`recipe_id` = b.`recipe_id`
WHERE b.`symbol_id` IN (8,16)
GROUP BY a.`recipe_id`
HAVING COUNT(DISTINCT b.`symbol_id`) = 2
关于mysql - Laravel mysql 多where查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31638375/