كيف يمكنني الحصول على منشور العلامة باستخدام Eloquent ORM

StackOverflow https://stackoverflow.com//questions/21011438

  •  21-12-2019
  •  | 
  •  

سؤال

لدي جداول النشر والعلامات المناسبة المستندة إلى ORM.العلامات المعينة للنشر عبر جدول محوري.للحصول على منشورات->علامات في laravel أستخدم علاقة النموذج أدناه.

//Model: Post
public function tags()
{
$this->belongsToMany('Tag', 'post_tag', 'post_id', 'tag_id');
}

هنا قاعدة البيانات الخاصة بي:

post
  id

tags
  id

post_tag
  post_id
  tag_id

سؤال

أريد استرداد جميع المشاركات التي لها اسم علامة محدد.

ما حاولت

Post::with(array('tags' => function($query) { $query->where('id', '=', 44); }))->get(); مع التحميل حريصة.ولكن أعطى خطأ النزاهة.

كما أنني حاولت علاقة الاستعلام، ورمي خطأ غير كائن.

Post::whereHas('tags', function($q)
{
    $q->where('id', '=', $tag_id);

})->get();
هل كانت مفيدة؟

المحلول

العلاقة ثنائية الاتجاه

تحتاج إلى تحديد علامة النموذج الخاصة بك باسم

class Tag{
    public function posts()
    {
         return $this->belongsToMany('Post');
    }
}

يمكنك بعد ذلك أن تفعل

$posts = Tag::find(44)->posts;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top