QueryException SQLSTATE [42S22]: столбец не найден: 1054 - PullRequest
0 голосов
/ 25 мая 2019

у меня исключение запроса SQLSTATE [42S22]: столбец не найден: 1054 Champ '3' inconnu dans on предложение (SQL: выберите content, name, to_id из message внутреннее объединение users в users. id = 3 где to_id = 1)

вот мой контроллер:

публичная функция show (пользователь $ user) {

    $users = DB::table('users')
        ->select('name','id')
        ->where('id','!=',auth()->user()->id)
        ->get();

    $messages = DB::table('message')
        ->join('users','users.id','=',$user->id)
        ->select('content','name','to_id')
        ->where('to_id','=',auth()->user()->id)
        ->get();


    return view('conversations/show',compact('users','user','messages'));
}

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Вам необходимо исправить условие соединения в запросе сообщений.

$messages = DB::table('message')
        ->join('users', function($join) use($user) {
            $join->('users.id', '=', 'messages.user_id')
                ->where('users.id', '=', $user->id)
        })
        ->select('content','name','to_id')
        ->where('to_id','=',auth()->user()->id)
        ->get();
0 голосов
/ 25 мая 2019

Вам необходимо объединить таблицы на основе внешнего ключа. Как:

->join('users', 'users.id', '=', 'message.user_id')

и вам нужно указать таблицу в «выберите» и «где» после присоединения. Как:

->select('message.content','users.name','messages.to_id')
->where('message.to_id', auth()->user()->id)

и вместо:

->join('users', 'users.id','=', $user->id)

сделать это после присоединения:

->where('users.id', $user->id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...