2016-02-16 3 views
2

Мне нужна ваша помощь, чтобы найти решение проблемы с созданием этого запроса. Представьте, что у меня есть 2 таблицы: сообщения и категории и сводная таблица: category_post.Извлечь сообщения, которые относятся к списку категорий laravel

сообщений: идентификатор, название, ...

категории: Идентификация, category_name, ...

category_post: POST_ID, category_id

Теперь я собираюсь получить категории, которые я хочу :

$categories = Category::whereIn('id', $array)->lists('id'); 

После этого запроса я имею список категории идентификаторов, и я хочу, чтобы получать только те сообщения, которые относятся к этим категориям. Не только должности, относящиеся к той или иной категории, но только должности, принадлежащие всем этим категориям.

Надеюсь, я хорошо себя объяснил. С уважением

ответ

0

Вы можете зарегистрировать отношение belongTo для сводного класса. (При условии, category_id и post_id внешние ключи.)

класс CategoryPost расширяет красноречивый {

protected $table = 'category_post'; 

public function posts() { 
    return $this->belongsTo('posts'); 
} 

public function categories() { 
    return $this->belongsTo('categories'); 
} 

}

Теперь вы можете вызвать

CategoryPost::with('posts')->whereIn('category_id', $categories)->groupBy('post_id)->get(); 
+0

Это прекрасно работает, я просто должен был добавьте groupBy ('post_id'), чтобы удалить дублированные записи. Спасибо! –

+0

Рад, что это помогло. –

+0

Мне нужна была еще одна вещь, чтобы она работала. Добавьте hasRaw ('count (*)> 1'), чтобы я мог одновременно выбирать только те сообщения, которые принадлежат ко всем этим категориям. –

Смежные вопросы