Я пытаюсь хранить состояния нескольких моделей в полиморфных отношениях и использовать их оттуда.
Получение статуса работает, но кроме этого мне нужно получить все (доступные) статусы, принадлежащие этой конкретной модели. И затем готов загрузить их, чтобы я мог использовать их в форме выбора или в другом месте.
Вот представление:
// Status.php
class Status extends Model
{
public function statusable()
{
return $this->morphTo();
}
}
// Article.php
class Article extends Model
{
public function status()
{
return $this->morphOne(Status::class, 'statusable', 'statusable_type', 'statusable_id', 'status');
}
}
// Post.php
class Post extends Model
{
public function status()
{
return $this->morphOne(Status::class, 'statusable', 'statusable_type', 'statusable_id', 'status');
}
}
Здесь я могу получить статус (подробности) выбранной модели, например App\Article::first()->status()->get()
, или загрузить ее как положено. Я хочу добавить метод, в котором я могу вызывать (все) статусы, которые принадлежат этой конкретной модели. Например:
$article = App\Article::first()->statuses();
, а затем вернуть все доступные статусы этой модели. Я могу (конечно) создать такой метод, как:
// Article.php
...
public function statuses()
{
$statuses = Status::where('statusable_type', self::class)->get();
return $statuses;
}
Но так я не могу загрузить его, потому что я не возвращаю отношения. Так есть ли более чистый способ, которым я могу использовать энергичную загрузку?