Неопределенное свойство: Illuminate \ Database \ Eloquent \ Collection :: $ id Laravel 4

Я использую Laravel V 4.2 ..
Я хочу создать запись обновления.
Вы можете мне помочь .. что не так с этим кодом …
это мой код:

MatakuliahsController.php

редактирование публичной функции ($ id)
{
// $ matakuliahs = $ this-> matakuliahs-> find ($ id);
$ matakuliahs = Matakuliah :: where ('id', '=', $ id) -> get ();

если (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-> идентификатор)))}}
...
{{Form :: close ()}}

Ошибка:

Неопределенное свойство: Illuminate \ Database \ Eloquent \ Collection ::$ ID (Просмотр: C: \ xampp \ htdocs \ Laravel 4 \ projectLaravel \ app \ views \ matakuliahs \ edit.blade.php)

спасибо за ваше внимание и вашу помощь ..

9

Решение

То, что вы пытаетесь получить, — это связь с коллекцией моделей, связь существует с объектом в этой коллекции. Вы можете использовать first (), чтобы вернуть первый, или вам нужно использовать цикл для каждого получить свои элементы

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

Другие решения

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

вернуть коллекцию объекта, где id равен $ id. в этом случае вернет коллекцию из 1 элемента, а не сам объект, конечно, если идентификатор уникален, поэтому, когда вы делаете:

$matakuliahs->id

вы пытаетесь получить доступ к свойствам идентификатора $ matakuliahs объект но $ matakuliahs в этом случае объект не является коллекцией.
Для решения этой проблемы вы можете сделать:
1.

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

или же

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

чтобы получить объект и получить доступ к свойствам.

2. на ваш взгляд:

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

надеюсь, это поможет. Спасибо

3

Попробуйте это в вашем методе контроллера:

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

И просто передать его на вид.

0