Запрос в laravel возвращает пустой ответ - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь получить данные из моей базы данных, используя leftJoin в laravel.У меня есть две таблицы с именами users и appointments, в моей таблице встреч есть поле с именем doctor_id, которое содержит идентификатор доктора, связанный с идентификатором в пользователях.оба значения идентификатора одинаковы.Мне нужно имя доктора из таблицы users и appointment_date, status из таблицы appointments, если значение идентификатора столбца в таблице users соответствует значению назначения столбца в таблице appointments с предложением where, где patient_id = $patientID.Но когда я выполняю свой запрос, он возвращает пустой ответ.

код

$patientID = $request->patientID;
$prevAppointments = DB::table('appointments')
  ->leftJoin('users', 'appointments.doctor_id', '=', 'users.id')
  ->select(
    'users.first_name',
    'users.last_name',
    'appointments.appointment_date',
    'appointments.status'
  )
  ->where('appointments.patient_id', $patientID)
  ->get();
return($prevAppointments);

таблица пользователя

user table

таблица встреч

appointments table

Ответы [ 2 ]

2 голосов
/ 21 сентября 2019

Попробуйте это -

$patientID = $request->patientID;
$prevAppointments = DB::table('appointments')
                        ->leftJoin('users', 'appointments.doctor_id', '=', 'users.id')
                        ->select('users.first_name','users.last_name','appointments.patient_id', 'appointments.appointment_date','appointments.status')
                        ->where('appointments.patient_id',$patientID)
                        ->get();
return($prevAppointments);
1 голос
/ 21 сентября 2019

создать модель с помощью этой команды (если у вас нет модели назначений): внутри корня вашего типа проекта:

php artisan make:model Appointment

внутри созданного файла напишите:

protected $fillable=['patient_id','doctor_id','appointment_date','status'];

public function doctor(){
    $this->belongsTo(User::class,'doctor_id');
}

теперь вы можете использовать этот красноречивый запрос: сначала добавьте класс назначения:

 Use App\Appointment;

, затем используйте его в методе:

 $prevAppointments = Appointment->where('patient_id','=',$patientID)->first();

теперь у вас есть коллекция, содержащая встречу со свойствами доктора,для получения более подробной информации о коллекциях Eloquent ORM и Laravel перейдите по этой ссылке: https://hamidshariati.ir/most-important-articles-to-learn-laravel/

...