web-dev-qa-db-ja.com

未定義のプロパティ:Illuminate \ Database \ Eloquent \ Collection :: $ id Laravel 4

私は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()}} 

エラーは:

未定義のプロパティ:Illuminate\Database\Eloquent\Collection ::$ id (表示:C:\ xampp\htdocs\Laravel 4\projectLaravel\app\views\matakuliahs\edit.blade.php)

あなたの注意と助けに感謝します。

取得しようとしているのは、モデルのコレクションの関係です。この関係は、そのコレクションのオブジェクトに存在します。 first()を使用して最初の1つを返すか、アイテムを取得するたびにループを使用する必要があります

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

idが$ idと等しいオブジェクトのコレクションを返します。この場合、もちろん、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

この助けを願っています。ありがとう

4
Ornelio Chauque

方法

MyModel::find($id); 

またはEloquentとの関係が機能しないLaravel 4.2次の解決策

$myModel= new MyModel;
$myModel->setConnection('mysql2');
$myModel= $myModel->where('id', $id)->first();
0
jrodriguez

あなたのコントローラーメソッドでこれを試してください:

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

そして、それをビューに渡します。

0
R_g