Использование идентификатора текущей модели в Laravel имеет много связей - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть ModelA, у которого много ModelB. Зарегистрированный пользователь имеет список ModelB, к которым он может получить доступ.

В моей модели ModelA я пытаюсь определить отношение, чтобы получить ModelB, связанное с ModelA что аутентифицированный пользователь может получить доступ:

    /**
     * All Model Bs for this Model A that the logged in user
     * can access
     */
    public function modelBsAccessibleByUser()
    {
        /** @var User $user */
        $user = \Auth::user();

        return $this->hasMany(ModelA::class)
            ->whereIn('id', $user->getModelBsForModelA($this)->pluck('id'));
    }

Проблема в том, что $this не является ссылкой на экземпляр ModelA, а просто пустым ModelA.

I я посмотрел на добавление атрибута, но это не достаточно хорошо, так как мне также нужно иметь возможность выполнять вложенные где-то в части приложения отношения. Например:

$this->builder
    ->with([
        'ModelBs',
        'ModelBs.latestModelC' => function (HasOne $query) use ($carbonDate) {
            $query->whereDate('modelCs.created_at', '<=', $carbonDate);
        },
    ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...