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

Laravel आदेश द्वारा hasmany संबंध

यह समझना महत्वपूर्ण है कि लारवेल की उत्सुक लोडिंग कैसे काम करती है। यदि हम आपका उदाहरण लोड करने के लिए उत्सुक हैं, तो Laravel पहले सभी थ्रेड प्राप्त करता है। फिर यह सभी टिप्पणियां प्राप्त करता है और उन्हें थ्रेड ऑब्जेक्ट में जोड़ता है। चूंकि अलग-अलग क्वेरी का उपयोग किया जाता है, इसलिए टिप्पणियों द्वारा थ्रेड्स को ऑर्डर करना संभव नहीं है।

आपको इसके बजाय एक जॉइन का उपयोग करने की आवश्यकता है। ध्यान दें कि मैं इस उदाहरण में आपके टेबल/कॉलम नामों का अनुमान लगा रहा हूं।

$threads = Thread::leftJoin('comment', 'comment.thread_id', '=', 'thread.id')
    ->with('comments')
    ->orderBy('comment.created_at', 'desc')
    ->get();

चूंकि आप शामिल हो रहे हैं, इसलिए आपको अपने टेबल कॉलम नाम चुनने के लिए मैन्युअल रूप से कॉलम निर्दिष्ट करने की आवश्यकता हो सकती है।

$threads = Thread::select('thread.*')->leftJoin('comment', 'comment.thread_id', '=', 'thread.id')
    ->with('comments')
    ->orderBy('comment.created_at', 'desc')
    ->get();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फॉर्म सत्यापन

  2. सेंटो पर mysqlclient स्थापित करने में असमर्थ

  3. MySQL में अधिकतम मूल्य के साथ रिकॉर्ड कैसे प्राप्त करें

  4. MySQL 5.6 . में रूट पासवर्ड रीसेट करना

  5. MySQL समस्या ISO 8601 प्रारूप से DATETIME फ़ील्ड को अपडेट कर रही है