Может ли кто-нибудь помочь мне понять это. Для начала это не дубликат из CRUD и отношение между тремя таблицами / моделями в Laravel .
Есть 2 таблицы Medication_Patient Pivot Table и Med_Time
Сводная таблица Medication_Patient
id medication_id patient_id
1 1 (MED X) 1 (Patient X)
2 2 (MED y) 1 (Patient X)
3 2 (MED y) 2 (Patient Y)
И MEdTime, в котором хранится время и где было дано лекарство или нет
id med_patient_id(foreign key) Day time given
1 1 Yesterday 0900 1
2 1 Today 0900 0
3 1 Today 2000 0
4 2 Today 0600 1
На моделях, которые у меня есть
class Medication extends Model {
protected $guarded = [];
public function patient()
{
return $this->belongsToMany('App\Patient');
} }
class Patient extends Model
{
public function medication()
{
return $this->belongsToMany('App\Medication');
}
}
Чтобы назначить лекарство пациенту
$assignedMeds = $patient->medication()->get();
но он не дает мне идентификатор сводной таблицы, который мне нужен, чтобы найти время для лекарств, поэтому я использовал (ПОЖАЛУЙСТА, ДАЙТЕ МНЕ ЗНАЮ, ЕСЛИ ЭТО ЛУЧШИЙ СПОСОБ ДЕЛАТЬ ЭТО)
//get the id from medication_patient pivot Table
$medPatient = DB::table('medication_patient')->select('id')
->Where([
['patient_id','=', $patient->id],
['medication_id' ,'=', $medication->id]
])->get()->first;
$medPatientId = $medPatient->id->id;
//Using Medication_patient_id to find MedTime
$assignedMedTimes = MedTime::where('med_patient_id' ,'=' , $medPatientId)->get();
//Filtering the Med Time according to the day
$yesterdayMedTimes = $assignedMedTimes->where('day', '=', 'yesterday')->all();
$todayMedTimes = $assignedMedTimes->where('day', '=', 'today')->all();
$tomorrowMedTimes = $assignedMedTimes->where('day', '=', 'tomorrow')->all();
return view('medicationPatient.medTime', compact('patient','medication'),[
'assignedMedTimes' => $assignedMedTimes,
'yesterdayMedTimes' => $yesterdayMedTimes,
'todayMedTimes' => $todayMedTimes,
'tomorrowMedTimes' => $tomorrowMedTimes,
]);
}
Но это работает только тогда, когда я получаю Время на 1 лекарство (время Med X, назначенное для пациента X), как мне настроить цикл или отношение в запросе или красноречивом, чтобы получить меня все время лекарства (MED X, время Y для пациента X) и передать его в лезвие.
Извините за длинный пост. Буду признателен, если вы могли бы показать мне код.
Спасибо