यह मेरा नियंत्रक कोड है:

if ($request->genre && !$request->search) {
    $genres = explode(',', $request->genre);
    return Movie::with('genres')->whereHas('genres', function ($q) use ($genres) {
        return $q->whereIn('id', $genres);
    })->paginate(10);
}

मेरी पिवट तालिका में movie_id और style_id है। दोनों फिल्मों और शैलियों की तालिकाओं में एक दूसरे की आईडी का संदर्भ नहीं होता है।

मुझे उस तालिका से सभी फिल्मों का चयन करना होगा जिनमें उपयोगकर्ता द्वारा चुनी गई शैलियों हैं।

उदाहरण के लिए, id's = [1, 4, 9] की एक सरणी और उन शैली आईडी वाली पिवट टेबल मूवी से चयन करने के लिए।

अग्रिम में धन्यवाद!

संपादित करें: कॉलबैक के अंदर सामान्य समस्या return थी और जिस तरह से मैंने बाद में डेटा को संभाला। आपके उत्तरों के लिए धन्यवाद, मैं इसकी सराहना करता हूं! :)

1
Arsen 27 फरवरी 2020, 16:43
तो आपके कोड के साथ क्या है? क्या यह काम नहीं करता है?
 – 
Paul Spiegel
27 फरवरी 2020, 16:55
मुझे लगता है कि आपको अपनी whereHas() क्वेरी में से केवल return को निकालने की आवश्यकता हो सकती है।
 – 
Qirel
27 फरवरी 2020, 16:56

1 उत्तर

आपने गलत प्रश्न किया है, दी गई क्वेरी का प्रयास करें।

return Movie::with(['genres'])->whereHas('genres' ,function ($query) use ($genres){
    $query->whereIn('id', $genres);
})->paginate(10);
0
Kiran Maniya 27 फरवरी 2020, 17:05
1
यह ऐसी कोई भी फिल्म भी प्राप्त करेगा जिसमें हालांकि वे शैलियां नहीं हैं, लेकिन यह केवल संबंध का हिस्सा नहीं होगी।
 – 
Qirel
27 फरवरी 2020, 16:56
धन्यवाद, अब यह काम करना चाहिए। प्रश्न में केवल त्रुटि है क्योंकि यह क्वेरी के अंदर return है। :-)
 – 
Kiran Maniya
27 फरवरी 2020, 17:07