यह देखने के लिए कि क्या template_ids
JSON फ़ील्ड में सुई सरणी में मानों में से "कोई भी" होता है, आपको कई OR
. का उपयोग करने की आवश्यकता होगी 'd JSON_CONTAINS
शर्तें जिनके लिए 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);
लारवेल का क्वेरी बिल्डर इस तरह की एक क्वेरी तैयार करेगा:
SELECT * FROM "posts"
WHERE "accessable_to" = ? AND (
JSON_CONTAINS(template_ids, '["1"]') OR
JSON_CONTAINS(template_ids, '["3"]') OR
JSON_CONTAINS(template_ids, '["48"]')
)
कौन से लक्ष्य ऐसे रिकॉर्ड करते हैं जिनके template_ids
. में इनमें से कोई भी आईडी है JSON- टाइप किया गया फ़ील्ड।
आपको संबंधित लारवेल आंतरिक प्रस्ताव को पढ़ने में रुचि हो सकती है। ।