Để xem liệu template_ids
Trường JSON chứa "bất kỳ" giá trị nào trong một mảng kim, bạn sẽ cần sử dụng nhiều OR
'd JSON_CONTAINS
các điều kiện yêu cầu MySQL 5.7:
$ids = ['1', '3', '48'];
Post::where('accessable_to', 1)
->where(function ($query) use ($ids) {
$firstId = array_shift($ids);
$query->whereRaw(
'JSON_CONTAINS(template_ids, \'["' . $firstId . '"]\')'
);
foreach ($ids as $id) {
$query->orWhereRaw(
'JSON_CONTAINS(template_ids, \'["' . $id . '"]\')'
);
}
return $query;
});
return Post::paginate(3);
Trình tạo truy vấn của Laravel sẽ tạo ra một truy vấn như:
SELECT * FROM "posts"
WHERE "accessable_to" = ? AND (
JSON_CONTAINS(template_ids, '["1"]') OR
JSON_CONTAINS(template_ids, '["3"]') OR
JSON_CONTAINS(template_ids, '["48"]')
)
Nhắm mục tiêu các bản ghi có bất kỳ ID nào trong template_ids
của chúng Trường được nhập JSON.
Bạn có thể quan tâm đến việc đọc một đề xuất liên quan đến Laravel nội bộ .