2014-09-23 14 views
6

में रिश्तों को सीमित करना मेरे पास एक मॉडल पोस्ट है जिसमें एक है ('टिप्पणियां') संबंध है। मैं टिप्पणियों के रिश्तों के साथ सभी पदों को प्राप्त करना चाहता हूं, लेकिन प्रत्येक पोस्ट के लिए केवल नवीनतम टिप्पणी। और क्योंकि हज़ारों टिप्पणियों के साथ हजारों पोस्ट हैं, प्रदर्शन विकल्प के कारण यह विकल्प संभव नहीं है (यानी प्रत्येक पोस्ट के लिए सभी टिप्पणियां लोड करना और फिर $ पोस्ट-> टिप्पणियां [0] -> मान):लार्वेल

Post::with('comments' => function($query){ 
    $query->orderBy('created_at','desc') 
}); 

न ही मैं कर सकते हैं:

Post::with('comments' => function($query){ 
    $query->orderBy('created_at','desc')->limit(1) 
}); 

इस रूप में सिर्फ काम नहीं करता।

मुझे पूरी तरह से यकीन है कि मैं इस मुद्दे के साथ अकेला नहीं हूं और मैंने कुछ समाधान 'समाधान के लिए प्रयास' ढूंढने का प्रबंधन किया है, लेकिन कामकाजी कोड का एक स्थिर उदाहरण नहीं है। क्या कोई मदद कर सकता है?

+2

http://stackoverflow.com/questions/24343738/getting-just-the-latest-value-on-a-joined-table की डुप्लिकेट: यह आप कैसे ले जा सकते हैं सभी टिप्पणियों कि से संबंधित हैं -साथ-वाक्पटु # 24,350,807। इसके अलावा http://softonsofa.com/tweaking-eloquent-relations-how-to-get-latest-related-model/ –

+0

शानदार देखें, मैं आज रात कोशिश करूँगा। यदि आप चाहते हैं कि आप इसे उत्तर के रूप में पोस्ट कर सकें ताकि मैं इसे सबसे अच्छे उत्तर के रूप में चिह्नित कर सकूं :) –

उत्तर

2

इसे आजमाएं: मान लें कि आपने अपने पोस्ट मॉडल पर "टिप्पणियां" संबंध परिभाषित किया है।

App\Post::all()->comments()->orderBy('comments.created_at')->take(1)->get();