选择与关系laravel一对多的查询

时间:2019-03-12 03:38:37

标签: laravel

我有一个这样的关系模式:

Siswa模型

    public function kelengkapan()
{
    return $this->belongsTo('Modules\PesertaDidik\Entities\SiswaKelengkapan');
}

SiswaKelengkapan模型

 public function siswas()
{
    return $this->hasMany('Modules\PesertaDidik\Entities\Siswa');
}

我要使用带有关联性的 select查询

在此控制器中:

        $siswa = Siswa::select('nama', 'nisn', 'tempat_lahir', 'tanggal_lahir', 'jk')->with('kelengkapan')->get();
    return view('pesertadidik::crud.index', compact('siswa'));

这是我的剑...

 <td>{{$data->kelengkapan->kelas_masuk}}</td>

但是这样的刀片错误

Trying to get property 'kelas_masuk' of non-object

我想在表格中显示kelas_masuk

如何使用具有雄辩关系的选择查询?

2 个答案:

答案 0 :(得分:0)

您的选择查询没有问题

您正在尝试检索null上的数据,这就是为什么您获得Trying to get property 'kelas_masuk' of non-object

控制器

$siswa = Siswa::select('nama', 'nisn', 'tempat_lahir', 'tanggal_lahir', 'jk')->with('kelengkapan')->get();
return view('pesertadidik::crud.index', compact('siswa'));

刀片文件

假设您使用的是foreachforloop

<td>{{ $data->kelengkapan->kelas_masuk ?? '--' }}</td> //coalescing operator

Or

<td>
  @if(!is_null($data->kelengkapan))
      {{ $data->kelengkapan->kelas_masuk }} 
  @endif
</td>

答案 1 :(得分:-1)

这里使用了get()方法,因此它会返回所有行

$siswa = Siswa::select('nama', 'nisn', 'tempat_lahir', 'tanggal_lahir', 'jk')->with('kelengkapan')->get();
return view('pesertadidik::crud.index', compact('siswa'));

在刀片中

 <td>{{$siswa[0]->kelengkapan->kelas_masuk}}</td>

您还可以使用foreach循环。

@foreach($siswa as $data) 
<tr>
     <td>{{$data->kelengkapan->kelas_masuk}}</td>
</tr>
@endforeach