检索条件laravel 5.2到控制器的数据

时间:2017-08-16 03:29:50

标签: php database laravel eloquent

问题是如何将外键中的数据导入我的控制器并传递给Session flash消息视图。

  

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-> id 获取数据并获取 nama 字段,然后传递给 Session :: flash('warning',$ nama- > nama。'Sudah Lebih Dari 3             Kali Alpa');             return redirect() - > route('absen.index');

  

艾比森@ siswa

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

Siswa @艾比森

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

也许你可以帮助我,谢谢

  

Absen表   Absen Table

Siswa Table

  

Siswa表

2 个答案:

答案 0 :(得分:0)

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;
}

答案 1 :(得分:0)

您可以使用Absen加载siswa,在过滤siswa_id的where子句中,它绑定到$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()函数获取第一个元素即可。 e.g。

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