Laravel Query Builder не определяет переменную как целое число и добавляет кавычки - PullRequest
0 голосов
/ 28 мая 2018

, когда я пытаюсь запустить:

$alunos = DB::table('students')
    ->select('students.id','students.name','students.matricula','students.birth')
    ->join('horarios_has_students','horarios_id','=',DB::Raw($id))
    ->whereRaw('students.id = horarios_has_students.students_id')
    ->where('students.situation',1)
    ->orderBy('students.name', 'ASC')
    ->get();

И это работает просто отлично.Но если я изменю DB :: Raw ($ id) только на $ id, например:

... 
->join('horarios_has_students','horarios_id','=',$id)
...

Это не сработает, потому что в этом случае horarios_id является внешним ключом, а Laravel добавляет кавычки (те, которые используются в запросах MySQL).Таким образом, я получаю это сообщение об ошибке:

"SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец '3' в 'предложении' (SQL: выберите` student``id`, `Students `` Name`, `Students`` Matricula`, `Students`` Birth` из внутреннего объединения `студентов '` horarios_has_students` на `horarios_id` =` 3` где Students.id = horarios_has_students.students_id и `Students\ `.`situation` = 1 порядок по` alunos` `name` asc)"

С DB :: Raw () работает, потому что он удаляет ``, так что это будет работать, только есликоманда была ... on `horarios_id` = 3 ... Что мне нужно сделать, чтобы это исправить?Заранее спасибо.

1 Ответ

0 голосов
/ 28 мая 2018

Используйте это:

$alunos = DB::table('students')
    ->select('students.id', 'students.name', 'students.matricula', 'students.birth')
    ->join('students.id', 'horarios_has_students.students_id')
    ->where('horarios_has_students.horarios_id', $id)
    ->where('students.situation', 1)
    ->orderBy('students.name', 'ASC')
    ->get();
...