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

Laravel 5 - इलेक्वेंट ग्रुप बाय फेल हो रहा है

अगर मैं सही ढंग से समझूं, तो आप सामग्री वस्तुओं की एक सूची उनके बच्चों के साथ लाना चाहते हैं, सही है?

ऐसा करने का सबसे आसान तरीका है अपने वाक्पटु सामग्री में माता-पिता-बच्चे के संबंध बनाना मॉडल और फिर उसका उपयोग माता-पिता को बच्चों के साथ लोड करने के लिए करें:

<?php
class Content extends Model {
  public function children() {
    //this defines a relation one-to-many using parent_id field as the foreign key
    return $this->hasMany(Content::class, 'parent_id'); 
  }

  public function parent() {
    return $this->belongsTo(Content::class, 'parent_id'); 
  }

  public function section() {
    return $this->belongsTo(Section::class);
  }
}

फिर, यदि आप सामग्री list को सूचीबद्ध करना चाहते हैं ऑब्जेक्ट उनके अनुभाग उनके बच्चों और उनके वर्गों के साथ, आप इस तरह से डेटा प्राप्त कर सकते हैं:

$contents = Content::with(['children', 'section', 'children.section'])->whereNull('parent_id')->get();

$contents में उन सभी सामग्री ऑब्जेक्ट्स का संग्रह होगा जिनमें कोई अभिभावक नहीं है। प्रत्येक ऑब्जेक्ट में एक $content->child . होगा विशेषता जिसमें सभी बच्चों का संग्रह होता है सामग्री वस्तुओं। $childContent->parent . में सभी बच्चों की वस्तुओं में उनके माता-पिता का संदर्भ भी होगा . माता-पिता और बच्चों दोनों का ->अनुभाग . में संबंधित अनुभाग होगा विशेषता।

यदि आप अपने ब्लेड . में अभी कुछ सामग्री पदानुक्रम प्रदर्शित करना चाहते हैं टेम्पलेट, आप $contents चर को दृश्य में पास कर सकते हैं और निम्न कार्य कर सकते हैं:

<ul>
@foreach($contents as $content)
  <li>{{$content->title}}</li>
  @if($content->children->count() > 0)
    <ul>
      @foreach($content->children as $childContent)
        <li>{{$childContent->title}}</li>
      @endforeach
   </ul>
  @endif
@endforeach
</ul>  

मैंने देखा है कि आपके पास एक अनुक्रम है अपने मॉडल में फ़ील्ड। मैं मानता हूं कि आप चाहते हैं कि सामग्री को उस क्षेत्र के अनुसार क्रमबद्ध किया जाए। इस मामले में आपको डेटा लाने के तरीके को संशोधित करने की आवश्यकता होगी:

$contents = Content::with(['children' => function($builder) {
  $builder->orderBy('sequence', 'desc');
}, 'section', 'children.section'])->whereNull('parent_id')->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. मैं CSV फ़ाइल को MySQL तालिका में कैसे आयात करूं?

  2. SQLAlchemy - तालिकाओं की सूची प्राप्त करना

  3. एसक्यूएल क्लॉज ग्रुप बाय 1 का क्या मतलब है?

  4. क्या मैं इस utf8 कैरेक्टर को बदल सकता हूँ?

  5. PDO::rowCount बनाम COUNT(*)