Я создаю блог для удовольствия. В моем блоге есть пользователи, сообщения и фиксированный список предопределенных категорий.
1) Посты принадлежат многим категориям. 2) Пользователи могут указать предпочтения категории и, следовательно, принадлежать ко многим категориям.
У меня это настроено как ряд отношений «многие ко многим»:
In User.php
:
/**
* A user belongs to many categories
*/
public function categoryPreferences()
{
return $this->belongsToMany('App\Category');
}
In Post.php
:
/**
* A Post Can Have Many Likes
*
* @return \Illuminiate\Database\Eloquent\Relations\belongsToMany
*/
public function categories()
{
return $this->belongsToMany('App\Category');
}
И обратное каждому в Category.php
:
/**
* A category belongs to many users
*/
public function users()
{
return $this->belongsToMany('App\User');
}
/**
* A category belongs to many posts.
*
* @return \Illuminiate\Database\Eloquent\Relations\belongsToMany
*/
public function posts()
{
return $this->belongsToMany('App\Post');
}
У меня есть соответствующие таблицы соединений category_post
и category_user
для поддержки каждой связи. Впрочем, может быть, я неправильно об этом думаю.
Я хотел бы отобразить цикл сообщений, принадлежащих категориям, указанным пользователями, но не могу понять, как это сделать. Я могу легко собрать предпочтения категории пользователя с помощью:
$categories = $user->categoryPreferences->pluck('id');
И может сделать то же самое для сообщений:
$categories = $post->categories->pluck('id')
Однако я не уверен, как объединить две коллекции вместе. Я изучил полиморфизм, но это не совсем правильно. Может ли кто-нибудь указать мне на правильную концепцию?