2 つのテーブル (City と Area) があります。市には多くの地域があります。それで、データの追加と削除に成功しました。しかし、編集および更新中に複数のエラーに直面しています。Laravelの学習を始めたばかりです。リソース コントローラーを使用しましたが、ルートの宣言で問題が発生したため、名前のルートも試しました。
私が遭遇したこのエラー:Trying to get property 'id' of non-object
フォームのルート ID を示します。です$editArea->id
。これが私のコードです。
web.php ルート:
Route::resource('area','Admin\AreaController');
Route::get('area/edit/{id}','Admin\AreaController@edit')->name('area.edit');
Route::post('area/update/{id}','Admin\AreaController@update')->name('area.update');
編集ボタン:<a href="{{route('area.edit', $row->id)}}">Edit</a>
エリアコントローラー:
public function edit(Area $area, $id)
{
$editArea= Area::find($id);
$cityno= City::orderBy('city_name', 'asc')->get();
return view('admin.editArea', compact('editArea','cityno'));
}
public function update(Request $request, Area $area, $id)
{
$editArea=Area::find($id);
$editArea->city_id=$request->city_id;
$editArea->area_name=$request->area_name;
$editArea->save();
}
編集フォーム:
<form method="POST" action="{{route('area.update', $editArea->id)}}">
@csrf
@method('put')
<select name="city_id">
@foreach($cityno as $row)
<option value="{{$row->id}}" >{{ucwords($row->city_name)}}</option>
@endforeach
</select>
<input type="text" name="area_name" value="{{$editArea->area_name}}">
<button type="submit">Update Area</button>
</form>
エリアモデル:
public function city(){
return $this->belongsTo(City::class,'city_id');}
都市モデル:
public function area(){
return $this->hasMany(Area::class); }
私は新しい学習者なので、間違ったコードを見つけるためにこれらのファイルで立ち往生しています。