2017-08-16 24 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

检查我的新编辑过的帖子: )也许你可以修复 –