Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लारवेल के वाक्पटु का उपयोग करके JSON कॉलम में खोजें

यह देखने के लिए कि क्या 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- टाइप किया गया फ़ील्ड।

आपको संबंधित लारवेल आंतरिक प्रस्ताव को पढ़ने में रुचि हो सकती है। ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL - तुर्की वर्ण

  2. अजगर में mysql के साथ तैयार बयानों का उपयोग करना

  3. 255 वर्णों से अधिक स्ट्रिंग्स की अनुमति देने के लिए हाइबरनेट-मैपिंग कैसे सेट करें?

  4. Mysql_fetch_array और mysql_fetch_row के बीच अंतर?

  5. MySQL - ELT () और FILED () सूची से सूचकांक स्थिति निकालने के लिए कार्य