ErrorException: Попытка получить свойство user_id не-объекта - PullRequest
0 голосов
/ 07 ноября 2018

Я использую $hidden и $appends, чтобы скрыть ключевое слово pivot из массива json и вытянуть объекты в основной массив. В игровой модели я добавил ниже скрипт для выполнения функциональности, как я сказал выше

    protected $hidden = ['pivot'];
    protected $appends = ['user_id','highscore', 'level'];

    public function getUserIdAttribute()
    {
        return $this->pivot->user_id;
    }

    public function getHighScoreAttribute()
    {
        return $this->pivot->highscore;
    }

    public function getLevelAttribute()
    {
        return $this->pivot->level;
    }

Теперь проблема в том, что я хочу получить все игры, и я знаю, что это так просто, я просто добавил в контроллер ниже скрипт

$Games = Game::all();
return new GameResource($Games); /* GameResource is for API */

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

ErrorException: Trying to get property user_id of non-object 

Любой может подсказать мне, как управлять обоими функциями, потому что мне нужны оба. Буду признателен, если кто-то любезно проведет.

После @emix Комментарий

@ emix, он не дублируется, потому что речь идет о ядре php, и я использую laravel. Конечно же, laravel построен на php, но все же есть сложная структура, поэтому я думаю, что эта не такая, как вы упоминали

1 Ответ

0 голосов
/ 07 ноября 2018

Сводка доступна только тогда, когда вы выбираете модели с помощью отношения «многие ко многим» (BelongsToMany). Сводка представляет поля в сводной таблице (например, games_users) и, таким образом, поля, которые существуют для этого конкретного отношения.

Когда вы просто извлекаете данные непосредственно из модели Game (таблица игр), у вас нет никакой взаимосвязи или сводной таблицы для извлечения данных.

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