Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm kiếm trong cột JSON bằng cách sử dụng tài hùng biện của Laravel

Để 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ộ .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP, PDO, MySQL, Thông báo:Đang cố gắng lấy thuộc tính của non-object

  2. Thiết kế cơ sở dữ liệu cho lượng dữ liệu rất lớn

  3. Cách bỏ qua hàng khi nhập kết xuất MySQL xấu

  4. Làm cách nào để chọn các hàng ngẫu nhiên trong MySQL?

  5. Loại dữ liệu đa ngôn ngữ trong MYSQL