當需要搜尋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 協議》,轉載必須註明作者和本文連結