无法显示模型对象中的数据

时间:2019-06-21 13:51:11

标签: laravel laravel-5 eloquent

我想更改不存在的数据,但出现错误“试图获取非对象的属性” id我什至不知道为什么,即使我之前做过也很好。我的关系表在Apache MySql中,因此我的模型为空。 我尝试匹配其他编辑方法,但没有错

这是我的edit()

public function edit($id)
    {
        $absensi = absensi::find($id);
        $dataSiswa = DB::table('absensis')
            ->join('siswas', 'siswas.id', '=', 'absensis.idSiswa')
            ->select('absensis.*', 'siswas.nama')
            ->where([
                ['siswas.id', $absensi->idSiswa],
            ])->first();

        return view('absensi.edit', ['absensi'=> $dataSiswa]);
    }

然后这是我的刀片

<div class="card-header">
            <h1>Edit Data Absensi </h1>
        </div>
        <div class="card-body">
        <form action="/absensi/{{$absensi->id}}" method="POST" name="form1" >
                {{ csrf_field() }}
                <div class="form-group">
                    <label for="usr">Nama :</label>
                <input type="text" value="{{$dataSiswa->nama}}">
                </div>
                <div class="form-group">
                    <label for="usr">Semester :</label>
                    <select name="semester" class="form-control" id="sel1">
                        <option value="genap"@if ($dataSiswa->semester=="ganjil") selected @endif>ganjil</option>
                        <option value="ganjil"@if ($dataSiswa->semester=="genap") selected @endif>genap</option>
                    </select>
                </div>
                <div class="form-group">
                    <input  type="hidden" class="form-control" name="kelas" value="{{$dataSiswa->kelas}}">
                </div>

                <div class="form-group">
                <label for="comment">izin:</label>
                <input type="number" class="form-control" name="izin" value="{{$dataSiswa->izin}}">
                </div>
                <div class="form-group">
                <label for="comment">Sakit :</label>
                <input type="number" class="form-control" name="sakit"  value="{{$dataSiswa->izin}}">
                </div>
                <div class="form-group">
                <label for="comment">Tanpa Keterangan :</label>
                <input type="number" class="form-control" name="tanpaKeterangan"  value="{{$dataSiswa->izin}}">
                </div>
                <button type="submit" class="btn btn-primary" id="Submit" name="Submit">simpan perubahan</button>
            </form>
        </div>

    </div>



</div>

2 个答案:

答案 0 :(得分:0)

更改

$absensi = absensi::find($id);

$absensi = absensi::findOrFail($id);

我认为问题在于模型无法找到具有该ID的记录

如果不是这种情况,那么

$dataSiswa = DB::table('absensis')
            ->join('siswas', 'siswas.id', '=', 'absensis.idSiswa')
            ->select('absensis.*', 'siswas.nama')
            ->where([
                ['siswas.id', $absensi->idSiswa],
            ])->first();

$dataSiswa = DB::table('absensis')
            ->join('siswas', 'siswas.id', '=', 'absensis.idSiswa')
            ->select('absensis.*', 'siswas.nama')
            ->where([
                ['siswas.id', $absensi->idSiswa],
            ])->first();

if(!$dataSiswa) {
    // throw new notfound exception here or return back
}


return view('absensi.edit', ['absensi'=> $dataSiswa]);

换句话说,您正在尝试访问空对象的属性,因为您进行的查询返回的是空对象,并且在刀片上您试图访问空对象的属性

答案 1 :(得分:0)

您可能应该考虑根据the docs用口才来定义您的关系。

完成后,您可以像下面这样使用Eloquent查询表:

$abensis = abensis::findOrFail($id);
$dataSiswa = $abensis->siswa;
return view('absensi.edit', ['absensi'=> $dataSiswa]);