Вопрос в том, как получить данные из внешнего ключа в мой контроллер и перейти к просмотру флеш-сообщений Session.
AbsenController @ магазин
$this->validate($request, [
'siswa_id' => 'required',
'keterangan' => 'required',
]);
$alpaCount = Absen::where('siswa_id', '=', $request->siswa_id)
->where('keterangan', '=', 'Alpa')
->count();
if (Absen::where('siswa_id', '=', $request->siswa_id)
->whereRaw('DATE(created_at) = CURDATE()')
->exists()) {
return redirect()->back()->with('message', 'Data Telah Tersedia');
} elseif($alpaCount >= 3) {
$absen = new Absen;
$absen->siswa_id = $request->siswa_id;
$absen->keterangan = $request->keterangan;
$absen->save();
$nama = Siswa::where('id', '=', $request->siswa_id)->get();Session::flash('warning', $nama->nama.' Sudah Lebih Dari 3 Kali
Alpa');
return redirect()->route('absen.index')
Посмотри на $ nama = Siswa :: where (‘id’, ‘=’, $ request-> siswa_id) -> get ();
я пытаюсь получить данные с $ Request-> идентификатор и получить нама поле, а затем перейти к Session :: flash (‘предупреждение’, $ nama-> nama. ‘Суда Лебих Дари 3
Кали Альпа ‘);
return redirect () -> route (‘absen.index’);
Absen @ siswa
public function siswa()
{
return $this->belongsTo('App\Siswa');
}
Siswa @ Absen
public function absen()
{
return $this->hasMany('App\Absen');
}
может быть, вы можете помочь мне, спасибо
Стол Сисва
find($request->id)
я предполагаю, что $request->siswa_id
потому что я не могу найти $ request-> id в вашем коде
попробуйте это с помощью Constraining Eager Loads
$nama = Absen::with(['siswa' => function ($query) use ($request) {
$query->where('id', $request->siswa_id);
}])->get();
Session::flash('warning', $nama->siswa->nama.' Sudah Lebih Dari 3
Kali Alpa');
РЕДАКТИРОВАТЬ ОТВЕТЫ
Исходя из таблицы, которую вы указали в своем вопросе, это можно сделать следующим образом.
$namas = Absen::where('siswa',$request->siswa_id)->get(); //will return array because of absent as many siswa
foreach($namas as $nama) {
$siswa_name = $nama->siswa->nama;
}
Вы можете загрузить Absen
с siswa
в предложении where при фильтрации siswa_id
это связано с $request->siswa_id
$nama = Absen::with(['siswa' => function ($query) use($request) {
$query->where('siswa_id', $request->siswa_id;);
}])->get();
Также вы можете лениво загружать:
$name = Absen::find($request->id);
а затем позвоните load
функция для загрузки связанной модели.
$name->load('siswa');
Так как сисва это массив. Вы можете пройти через это и найти нужное имя объекта. Или вы можете просто взять первый элемент, используя first()
функция. например
$nama->siswa->first()->anyproperty;