You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何用Eloquent查询array类型字段包含指定值的记录

Eloquent检索array类型字段包含指定值的实现方案

根据你使用的数据库类型,可选择对应的实现方式:

情况1:使用MySQL 5.7+(area字段为JSON类型)

直接调用Eloquent原生的whereJsonContains方法即可:

// 检索area字段包含10的药店,提取id转为数组
$pharmacyIds = \App\Models\Pharmacy::whereJsonContains('area', 10)
    ->pluck('id')
    ->toArray();

执行后得到的$pharmacyIds就是你期望的[1,3]结果。

情况2:使用PostgreSQL(area字段为原生array类型)

可以用PostgreSQL的数组包含操作符@>配合whereRaw实现:

$pharmacyIds = \App\Models\Pharmacy::whereRaw('area @> ARRAY[?]::int[]', [10])
    ->pluck('id')
    ->toArray();

补充说明

  • 如果你已经在Pharmacy模型里将area字段配置了array类型的强制转换(也就是在模型的$casts数组里加了'area' => 'array'),上述两种写法都不需要额外调整参数格式。
  • pluck('id')方法会直接提取符合条件的记录id字段,调用toArray()后直接返回索引数组,完全匹配你需要的返回格式。

内容的提问来源于stack exchange,提问作者afsara_ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:15:05