Мне не удалось получить данные с помощью DB: table () в laravel - PullRequest
0 голосов
/ 16 марта 2020

Мне не удалось получить какую-либо дату с этим кодом

$data = DB::table('students')
          ->where([
            'students.school_id' => $school_id,
            'students.status' => true,
            'students.class'  => $request->class,
            'students.section'  => $request->section,
            'student_attendances.date' => "'$today'",
            'students.school_id' => 'student_attendances.school_id'
            ])
          ->leftJoin('student_attendances', 'students.rfid_number', '=', 'student_attendances.uid')
          ->get();

над кодом, возвращающим этот запрос:

select * from `students` left join `student_attendances` on `students`.`rfid_number` = `student_attendances`.`uid` where (`students`.`school_id` = 1 and `students`.`status` = 1 and `students`.`class` = 1 and `students`.`section` = 1 and `student_attendances`.`date` = '2020-03-16' and `students`.`school_id` = student_attendances.school_id)

Я пробовал этот запрос в базе данных mysql и успешно получаю данные. А также ниже код работает нормально:

$sql_query_text = "select * from students left join student_attendances on students.rfid_number = student_attendances.uid where (students.school_id = student_attendances.school_id and students.status = 1 and students.class = '{$request->class}' and students.section = '{$request->section}' and date(student_attendances.created_at) = '$today')";

$data = DB::select($sql_query_text);

Я не мог понять, в чем вина. Пожалуйста помоги. Спасибо.

1 Ответ

0 голосов
/ 18 марта 2020

проблема в

'students.school_id' => 'student_attendances.school_id'

Условие объединенной таблицы нельзя использовать в ->where(), поэтому я использую

->leftJoin('student_attendances', function($join){
      $join->on('students.rfid_number', '=', 'student_attendances.uid');
      $join->on('students.school_id', '=', 'student_attendances.school_id');
    })

И это решило мою цель

...