2017-08-16 9 views
0

にどこにあるかでデータを取得します。私のコントローラに外部キーからデータを取得し、セッションフラッシュメッセージビューに渡す方法です。は、条件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 ::( 'ID'、 '='、$要求 - > siswa_id)のルック - >()を取得。 $要求 - > IDでデータを取得し、NAMAフィールドを取得し、セッション::フラッシュ( '警告'、$ nama-> NAMAに渡そう。」Sudah Lebihダリー3 カーリーアルパを イム'); returnリダイレクト() - >経路( 'absen.index');

Absen @ siswa

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

Siswa @多分

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

あなたは私を助けることができる、absenおかげ

Absen表 Absen Table

Siswa Table

Siswa表

答えて

0

find($request->id)私はどこでもあなたのコード

で$要求 - > IDを見つけることができないので、私は $request->siswa_idことを前提としてい

これを試す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'); 

EDITは、あなたの質問に示すテーブルに基づいて

を答え、siswa_idをフィルタリングしているときは、where句で、siswaAbsenを読み込むことができ、この

$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

を照らし\ Databaseの雄弁\ビルダー\ :: $ siswaはまだ動作しませ :( –

+0

まし

$nama->siswa->first()->anyproperty; 
ZeroOne

+0

を編集した。これを試してみてくださいエラー –

0

のように行うことができ、それバインドする$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()関数を使って最初の要素を取り除くこともできます。例えば

は私が私の編集したポスト:)
+0

私の編集した投稿を確認してください:) –

+0

私の新しい編集ポストを確認してください: )多分あなたは修正することができます –

関連する問題