【问题标题】:cannot show data from model object无法显示来自模型对象的数据
【发布时间】:2019-11-04 09:13:47
【问题描述】:

我想更改不存在的数据,但出现错误'尝试获取非对象的属性'id'我不明白为什么,即使我之前已经做过并且很好。我的关系表在 apache MySql 中,所以我的模型是空白的。 我尝试匹配我的其他编辑方法,但没有任何问题

这是我的编辑()

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>

【问题讨论】:

    标签: laravel laravel-5 eloquent


    【解决方案1】:

    改变

    $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]);
    

    换句话说,您正试图访问一个空对象的属性,因为您所做的查询返回一个空对象,而在您的刀片上,您正试图访问一个空对象属性

    【讨论】:

    • 等待,它显示另一个错误'调用未定义的方法 Illuminate\Database\Query\Builder::firstOrFail()'
    • 你使用的是哪个版本的 laravel
    • hmm...问题是您正在使用数据库表,并且 firstOrFail 方法在那里不可用,我已经更新了问题以包含该问题,但是如果您想实现第一个或数据库外观的失败方法也使用这个答案stackoverflow.com/questions/33098132/…
    【解决方案2】:

    您可能应该考虑根据 the docs 定义您与 eloquent 的关系。

    完成后,您可以使用 Eloquent 查询您的表,如下所示:

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

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 2021-05-18
      • 1970-01-01
      • 2020-01-28
      相关资源
      最近更新 更多