首页 文章

未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ id Laravel 4

提问于
浏览
9

我正在使用laravel v 4.2 ..我想创建更新记录 . 你可以帮助我..这段代码有什么问题......这是我的代码:

MatakuliahsController.php

public function edit($id)
    {
        //$matakuliahs = $this->matakuliahs->find($id);
        $matakuliahs = Matakuliah::where('id','=',$id)->get();

        if(is_null($matakuliahs)){
            return Redirect::route('matakuliahs.index');
        }

        return View::make('matakuliahs.edit',compact('matakuliahs'));
    }

edit.blade.php

{{ Form::open(array('autocomplete' => 'off', 'method' => 'PATCH', 'route' => array('matakuliahs.update', $matakuliahs->id))) }}
...
{{ Form::close() }}

Error is :

Undefined property: Illuminate\Database\Eloquent\Collection::$id (View: C:\xampp\htdocs\Laravel 4\projectLaravel\app\views\matakuliahs\edit.blade.php)

感谢您的关注和帮助..

3 回答

  • 3

    你想要得到的是一组模型上的关系,该关系存在于该集合中的对象上 . 您可以使用first()返回第一个,或者您需要使用循环来获取每个项目

    $matakuliahs = Matakuliah::where('id','=',$id)->get()->first();
    
  • 0
    $matakuliahs = Matakuliah::where('id','=',$id)->get();
    

    返回id等于$ id的对象的colllection . 在这种情况下,如果id是唯一的,那么将返回1个元素的集合而不是对象本身,所以当你这样做时:

    $matakuliahs->id
    

    你正在试图访问 $matakuliahs 对象的id属性,但在这种情况下 $matakuliahs 不是一个对象是一个集合 . 要解决这个问题你可以做到:
    1 .

    $matakuliahs = Matakuliah::where('id','=',$id)->get()->first();
    

    要么

    $matakuliahs = Matakuliah::where('id','=',$id)->first();
    

    获取对象并获取属性 .

    2.在你看来:

    @foreach( $matakuliahs as $matakuliah)
    //your code here
    @endforeach
    

    希望这个帮助 . 谢谢

  • 24

    在控制器方法中尝试这个:

    $matakuliahs = Matakuliah::find($id);
    

    然后将它传递给视图 .

相关问题