Laravel whereIn implementasi whereJsonContains
Aug 19 2020
Saya memiliki kode ini yang berfungsi dengan baik dan mengembalikan 1 koleksi item:
$myCollection = MyModel::whereJsonContains('payload->ProductCode->id', "1")->get();
Namun saya ingin mengambil $ myCollection tidak hanya ketika nilainya 1 tetapi ketika itu terkandung dalam salah satu dari banyak item array.
$array = [0 => 1, 1 => 2, 2 => 3]; $myCollection = MyModel::whereJsonContains('payload->ProductCode->id', $array)->get();
PEMBARUAN Ketika saya mencoba kode ini mengembalikan data kosong. Maksud saya saat saya menggunakan 1, bukan "1" . Mungkinkah itu alasan mengapa tidak berfungsi saat saya menggunakan array?
$myCollection = MyModel::whereJsonContains('payload->ProductCode->id', 1)->get();
Contoh isi payload adalah ini. Saya kira itu bisa memberi lebih banyak kejelasan untuk pertanyaan saya:
{
"ProductCode": {
"id": "1",
"name": "My Service",
}
}
Menjalankan kode di atas mengembalikan data kosong. Bagaimana cara memperbaikinya?
Jawaban
1 DilipHirapara Aug 19 2020 at 08:43
Anda harus mengikuti kueri Anda seperti di bawah ini.
$array = [0 => 1, 1 => 2, 2 => 3]; // Eloquent PaymentTransaction::whereJsonContains('payload->ProductCode->id',$array)->get();;
// or
PaymentTransaction::jsonContains('payload->ProductCode->id', $array)->get();
Anda bisa mencobanya seperti di bawah ini juga.
$array = [0 => 1, 1 => 2, 2 => 3];
$array = array_values(array_map('strval',$array));
PaymentTransaction::where(function ($query) use ($array) {
foreach ($array as $id) {
$query->orWhereJsonContains('payload->ProductCode->id', $id);
}
})->get();
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'