मान लें कि मेरे पास निम्न कोड है जो मूल रूप से 5 से अधिक रेटिंग वाली सभी फिल्मों को लौटाता है:

$movies = Movie::where('private', 0)->with(['user', 'ratings', 'tagged'])->has('ratings', '>=', 5)->paginate(15)->onEachSide(1);

हालांकि मैं उन परिणामों को प्रत्येक फिल्म के लिए औसत रेटिंग के आधार पर भी ऑर्डर करना चाहूंगा। मैं वर्तमान में रेटिंग प्रबंधित करने के लिए laravel-rateable का उपयोग कर रहा हूं और इसमें एक ->averageRating() है विधि जो ठीक काम करती है, लेकिन मुझे नहीं पता कि इसका लाभ कैसे उठाया जाए और यदि यह संभव हो तो ऊपर दिए गए प्रश्न में इसका उपयोग करें। शायद यह उस विशिष्ट विधि का उपयोग किए बिना हासिल किया जा सकता है? क्या कोई मुझे कृपया सही दिशा में इंगित कर सकता है?

समाधान: मैंने निम्नलिखित उत्तर का उपयोग किया जो ठीक काम करता है आदेश के साथ औसत कैसे प्राप्त करें द्वारा Laravel 5 में विवरण

0
Alex 21 पद 2019, 20:29
मैंने पैकेज में देखा। विधि ->averageRating() बस $this->ratings()->avg('rating') लौटाएं। इस धागे में आपके प्रश्न का उत्तर पहले ही दिया जा सकता है। stackoverflow.com/a/51253593/7329321
 – 
bunchhaychea
21 पद 2019, 20:56
धन्यवाद, ऐसा लगता है कि यह ठीक काम करता है।
 – 
Alex
21 पद 2019, 21:34

1 उत्तर

इसके बारे में निश्चित नहीं है, लेकिन आप कोशिश कर सकते हैं:

$movies = Movie::where('private', 0)
    ->with(['user', 'ratings', 'tagged'])
    ->has('ratings', '>=', 5)
    ->orderBy(function($item) {return $item->averageRating();})
    ->paginate(15)->onEachSide(1);
0
Epsilon47 21 पद 2019, 20:48
बस कोशिश की और निम्नलिखित अपवाद मिला: BadMethodCallException Call to undefined method Illuminate\Database\Query\Builder::averageRating() Bad Method Call Did you mean Illuminate\Database\Query\Builder::average() ?
 – 
Alex
21 पद 2019, 20:51