从与以下数据匹配的表中提取记录时遇到问题:
$request->cardColor包含:
0 => "White"
1 => "Green"
我想从我的cards
表中提取exactly与上面的数据相匹配的colors
列的记录.此列中的示例(数组)条目为["White","Green","Red","Blue"]
有了这一点,我希望能够获取严格的白色and绿色的值只有条目.希望能够为此建立一个适当的查询.
请随时提出澄清问题,如有任何帮助,我们将不胜感激.
从与以下数据匹配的表中提取记录时遇到问题:
$request->cardColor包含:
0 => "White"
1 => "Green"
我想从我的cards
表中提取exactly与上面的数据相匹配的colors
列的记录.此列中的示例(数组)条目为["White","Green","Red","Blue"]
有了这一点,我希望能够获取严格的白色and绿色的值只有条目.希望能够为此建立一个适当的查询.
请随时提出澄清问题,如有任何帮助,我们将不胜感激.
您可以结合使用whereJsonContains()
和whereJsonLength()
来达到想要的效果,例如:
$colors = $request->cardColor;
\Illuminate\Support\Facades\DB::table('cards')
->whereJsonContains('colors', $colors)
->whereJsonLength('colors', count($colors))
->get();
调用whereJsonContains()
允许您判断列中的值是否存在,调用whereJsonLength()
是必要的,因为您希望colors
列包含与$request->cardColors
中完全相同的元素数量.