Как получить более подробную информацию об использовании таблицы с клавиатурой в laravel? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть отношение one to many, основанное на двух таблицах users и games. Существует также сводная таблица users_games (связывающая user_id с games).

Я пытаюсь получить одну запись на основе game_id и user_id, используя приведенный ниже скрипт

$GameInfo = User::with(['games' => function ($query) use($request)
        {
            $query->where('game_id', $request->game_id);
        }])->whereHas('games', function ($query) use($request)
        {
            $query->where('game_id', '=', $request->game_id);
        })->find(request()->user()->id);

Ниже приведен ответ приведенного выше сценария (я использую ресурс API)

{
    "data": [
        {
            "id": 4,
            "name": "eum",
            "type_id": 2,
            "created_at": "2018-10-30 11:23:28",
            "updated_at": "2018-10-30 11:23:28",
            "pivot": {
                "user_id": 2,
                "game_id": 4
            }
        }
    ]
}

Сейчас я хочу получить highscore этой игры, которая хранится в таблице user_games. Я много пробовал, но все равно не смог достичь желаемого результата.

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

1 Ответ

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

В своих красноречивых отношениях вы можете использовать функцию withPivot():

  return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');

но он всегда будет возвращать столбец сводки, если вы хотите сделать это только в текущем запросе, вы можете сделать это:

  $GameInfo = User::with(['games' => function ($query) use($request)
    {
        $query->withPivot('highscore')->where('game_id', $request->game_id);
    }])->whereHas('games', function ($query) use($request)
    {
        $query->where('game_id', '=', $request->game_id);
    })->find(request()->user()->id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...