2017-08-16 56 views
0

問題是如何從外鍵獲取數據到我的控制器並傳遞到會話的Flash消息視圖。檢索數據與條件laravel 5.2到控制器

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 ::在哪裏( '身份證', '=',$請求 - > siswa_id) - >獲得(); 我嘗試用$請求 - > ID獲取數據,並得到NAMA字段,然後傳遞給會議::閃光燈(「警告」,$ nama-> NAMA。」 Sudah Hotel詳細信息達日3 卡利阿爾帕「); return redirect() - > route('absen.index');

艾比森@ siswa

public function siswa() 
{ 
    return $this->belongsTo('App\Siswa'); 
} 

Siswa @艾比森

public function absen() 
{ 
    return $this->hasMany('App\Absen'); 
} 

也許你可以幫我,謝謝

艾比森表 Absen Table

Siswa Table

Siswa表

回答

0

find($request->id)我認爲$request->siswa_id,因爲我無法找到$請求 - > 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; 
} 
+0

照亮\數據庫\雄辯\生成器:: $ siswa我得到錯誤 –

+0

試試這個..我編輯我anwswer – ZeroOne

+0

請檢查我的後期編輯:) –

0

做可以加載Absensiswa,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'); 

由於siswa是一個數組。你可以遍歷它並找到所需的對象名稱。或者,您可以簡單地使用first()函數獲取第一個元素。例如

$nama->siswa->first()->anyproperty; 
+0

請檢查我編輯過的帖子:) –

+0

檢查我的新編輯過的帖子: )也許你可以修復 –