加入,尝试获取非对象的属性, - >首先, - > firstorfail, - > get()

时间:2016-02-02 15:59:26

标签: mysql laravel pdo laravel-5

我对Laravel很新,对不起,如果这是一个简单的问题。 在 panitia 控制器中,如果我使用get(),我会得到: Trying to get property of non-object

如果我使用firstOrFail,我会得到: Call to undefined method Illuminate\Database\Query\Builder::firstOrFail()

如果我使用first(),它会起作用,但它只显示第一条记录

问题是这个代码没问题,直到我需要连接表。

PanitiaController

 public function lihat($username)
{   
    $panitia=DB::table('panitia')
    ->join('detail', 'panitia.id_panitia', '=', 'detail.id_panitia')
   ->where('username', '=', $username)
   ->first();
   return view('admin.lihat',compact('panitia'));

}

panitia view

@foreach ($panitias as $panitia)

     <tr>
         <td>{{ $panitia->id_panitia }}</td>
         <td>{{ $panitia->username }}</td>
         <td>{{ $panitia->nama }}</td>




         <td><a href="{{url('/admin/panitia/lihat',$panitia->username)}}" class="btn btn-primary">Detail</a></td>
         <td><a href="{{url('/admin/panitia/edit',$panitia->username)}}" class="btn btn-warning">Edit</a></td>
         <td>

         </td>
     </tr>
 @endforeach

lihat view

<div class="form-group">
        <label for="isbn" class="col-sm-2 control-label">Id Panitia</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="id_panitia" placeholder={{ $panitia->id_panitia}} readonly>
        </div>
    </div>
    <div class="form-group">
        <label for="title" class="col-sm-2 control-label">Nama</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="username" placeholder={{$panitia->username}} readonly>
        </div>
    </div>
    <div class="form-group">
        <label for="title" class="col-sm-2 control-label">Nama</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="nama" placeholder={{$panitia->nama}} readonly>
        </div>
    </div>

解决

只是形成问题t_t 谢谢大家帮助我:)。

2 个答案:

答案 0 :(得分:0)

我认为你需要谈谈文档。特别是关于雄辩和模特。那更容易,那就是你做的...... https://laravel.com/docs/5.2/eloquent

答案 1 :(得分:0)

$app->get('/', function($request, $response, $args) { return $response->withRedirect('/projetcs'); }); first()将检索一条记录 - 如果它存在则找到它的第一条记录。

firstOrFail()也仅适用于Eloquent。您正在使用查询构建器,因此该方法不存在。

最后,firstOrFail()正是您要找的。它“获取”所有匹配的记录,但查询构建器的get()方法返回一组记录。

您的观点并未反映出这一点。您的视图假定只有一条记录,因此您收到get()错误消息。如果您获得多条记录但是您尝试执行此操作:Trying to get property of non-object,代码应该如何知道应该获取哪条记录的ID?它不能,因为它试图访问数组的id,这是没有意义的。您需要遍历并将$panitia->id_panitia视图更改为以下内容:

注意foreach:

lihat

另外,我在双花括号周围添加了引号。