كيف يمكنني الحصول على منشور العلامة باستخدام Eloquent ORM
سؤال
لدي جداول النشر والعلامات المناسبة المستندة إلى 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;
لا تنتمي إلى StackOverflow