Предположим, у меня есть записи и видео, которые могут просматривать несколько пользователей.
- users
- id
- posts
- id
- videos
- id
- user_accessables (pivot)
- id
- user_id
- accessable_id
- accessable_type
В этом примере я настроил свои отношения с пользователем так, но что-то не так
class User extends Model {
public function posts() {
return $this->morphedByMany(
Post::class,
'accessable',
'user_accessables'
);
}
public function videos() {
return $this->morphedByMany(
Video::class,
'accessable',
'user_accessables'
);
}
public function allowedEntities() {
return ($this->posts)->merge($this->videos);
}
}
С помощью allowedEntities()
я могу объединить обе модели.
Тем не менее, я думаю, что использование полиморфных отношений возвращает коллекцию сущностей через отношения, а не требует отношения комбинатора, верно?
У меня проблемы с пониманием полиморфности с помощью сводной таблицы (пример тега в документации не похож на тот же сценарий).
Потому что теперь я не могу сделать:
$collection = collect(); // multiple models of Video & Post
$user->allowedEntities()->sync($collection);