从与以下数据匹配的表中提取记录时遇到问题:

$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中完全相同的元素数量.

Php相关问答推荐

PHP在将数组子集赋给变量时是否复制数组子集?

如何优化-PHP 7.3.14+Laravel 6

在WooCommerce管理订单列表中显示项目总权重

PHP:PHP手册-Manual

使注册字段UserMeta值对于WooCommerce中的每个用户是唯一的

PHP文件上载问题-";Move_Uploaded_Files";未按预期工作

如何在微软图形API中使用用户S访问令牌或基于租户ID的访问令牌?

在WP工具中页面加载时可短暂看到的JavaScript生成的字段

更改特定产品标签的 Woocommerce 产品名称

既然setSQLLogger()已被弃用,如何使用中间件在 Doctrine 3 中记录查询执行时间?

根据页面以及是否在促销,向 WooCommerce 中显示的价格添加前缀

对 WooCommerce 购物车和 checkout 中显示的运输方式进行排序

批量更新 WooCommerce 中所有产品的特定自定义字段

WooCommerce checkout 流程中基于所选选项添加自定义费用

自定义主键值未正确显示

php/html OnSubmit 禁用输入类型提交未给出预期结果

如果有很多重定向,PHP curl 的行为不像命令行 curl

PHP 将数组值插入到 csv 列

如何通过路由传递变量

根据数组中的文本文件编号显示星级