Здравствуйте.
У меня есть модели: User, Post, Videos.
Я хочу сделать возможность ставить лайки постам и видео, а затем получать список постов/видео, которые "лайкнул" конкретный юзер.
Вот структура, на которой я пока остановился.
posts
id - integer
title - string
videos
id - integer
title - string
likes
id - integer
user_id - integer
likeable_id - integer
likeable_type - string
Создал модель Like, определил отношения таким образом.
class User extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
public function videos()
{
return $this->hasMany(Video::class);
}
}
class Post extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
public function likes()
{
return $this->morphMany(Like::class, 'likeable');
}
}
class Video extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
public function likes()
{
return $this->morphMany(Like::class, 'likeable');
}
}
class Like extends Model
{
public function likeable()
{
return $this->morphTo();
}
}
Как получить все посты/видео, которым пользователь поставил "лайк"?
Правильна ли такая структура и отношения?