محمد لارافيل نشر 23 مارس 2023 أرسل تقرير نشر 23 مارس 2023 لدي جدول post ولديه علاقة many to many بجدول category ، وبالطبع جدول وسيط بينهما. أحاول الحصول على جميع المنشورات التي تتطابق مع مصفوفة من category ، على سبيل المثال: category_array = [food, travel, people] لذا ، أريد كل المنشورات التي تحتوي على كل تلك الفئات داخل المصفوفة. لقد جربت هذا لكنني لم ينجح $query->when( $filters['category'] ?? false, function ($query, $category) { $query->whereHas('categories', function ($query) use($category){ $query->whereIn('name', $category); }); } ); لقد جلب فقط المنشورات التي تحتوي على واحد منهم. واريد فقط المنشور الذي يحتوي على جميع الفئات وليس واحدا فقط. جربت هذا أيضا لكن لم ينجح كذلك: $query->when( $filters['category'] ?? false, function ($query, $categories) { $query->whereHas('categories', function ($query) use ($categories) { foreach ($categories as $cater) { $query->where('name', $cater); } }); } ); هل يمكنكم مساعدتي؟ اقتباس
0 Asem Mohamed نشر 23 مارس 2023 أرسل تقرير نشر 23 مارس 2023 لعمل هذا انت تحتاج أمر SQL شائع جدا وهو WHERE IN ويمكن تحقيقه ب لارافل عن طريق دالة whereIn حيث تجلب اي بيانات تتطابق مع اي من المصفوفة التي تممرها لها يمكنك اعادة كتابة الكود كالتالي <?php $categories = ['food', 'cars', 'technology']; $posts = Post::whereHas('categories', function($query) use ($categories) { $query->whereIn('category_name', $categories); })->get(); هنا عملنا جلب لاي بوست له علاقة مع الجدول categories ثم انشأنا query لعمل whereIn حيث نجلب اي post له علاقة مع category يكون اسمه احد الاسماء المعدة سلفا في المصفوفة اقتباس
السؤال
محمد لارافيل
لدي جدول post ولديه علاقة many to many بجدول category ، وبالطبع جدول وسيط بينهما.
أحاول الحصول على جميع المنشورات التي تتطابق مع مصفوفة من category ، على سبيل المثال:
category_array = [food, travel, people]
لذا ، أريد كل المنشورات التي تحتوي على كل تلك الفئات داخل المصفوفة.
لقد جربت هذا لكنني لم ينجح
$query->when( $filters['category'] ?? false, function ($query, $category) { $query->whereHas('categories', function ($query) use($category){ $query->whereIn('name', $category); }); } );
لقد جلب فقط المنشورات التي تحتوي على واحد منهم. واريد فقط المنشور الذي يحتوي على جميع الفئات وليس واحدا فقط.
جربت هذا أيضا لكن لم ينجح كذلك:
$query->when( $filters['category'] ?? false, function ($query, $categories) { $query->whereHas('categories', function ($query) use ($categories) { foreach ($categories as $cater) { $query->where('name', $cater); } }); } );
هل يمكنكم مساعدتي؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.