Как я могу получить все записи, принадлежащие модельному классу, как отношение на 1-М полиморфном отношении - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь хранить состояния нескольких моделей в полиморфных отношениях и использовать их оттуда.

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

Вот представление:

// 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;
}

Но так я не могу загрузить его, потому что я не возвращаю отношения. Так есть ли более чистый способ, которым я могу использовать энергичную загрузку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...