mysql json数组内对象属性 多个值搜索
当需要搜索json字段数组内对象属性时用JSON_CONTAINS(字段,JSON_OBJECT(‘json属性’, “内容”))
数组内只有json对象时
$query->whereRaw("JSON_CONTAINS(column, JSON_OBJECT('attr', 'value'))");
多个值搜索可以拼接sql
多个值为或关系时
$values = ['value1', 'value2'];
$sql = [];
foreach ($values as $value) {
$sql[] = "JSON_CONTAINS(column, JSON_OBJECT('attr', {$value}))";
}
$query->whereRaw(implode(' or ', $sql));
多个值为且关系时
$values = ['value1', 'value2'];
$sql = [];
foreach ($values as $value) {
$sql[] = "JSON_CONTAINS(column, JSON_OBJECT('attr', {$value}))";
}
$query->whereRaw(implode(' and ', $sql));
数组内json包含数组时
$query->whereRaw("JSON_CONTAINS(column, JSON_OBJECT('attr', JSON_ARRAY('value')))");
本作品采用《CC 协议》,转载必须注明作者和本文链接