Eloquent ORM – обновление и удаление не работают

Я работаю над CRUD для моего первого проекта Laravel. Отображение и показ элементов работает нормально.

Я попытался обновить запись с помощью Query, чтобы подтвердить, что я могу изменить значения в таблице, и она сработала:

DB::update("UPDATE seasons SET title = 'foo' WHERE ID = 1"); 

Моя проблема в том, что ни обновление, ни удаление записей не будут работать.

 <?php class SeasonAdminController extends \BaseController { // WORKS public function store() { $season = new Season; $season->title = Input::get('title'); $season->save(); Session::flash('message', 'success!'); return Redirect::to('backend/season'); } // NOT WORKING public function update($id) { $season = Season::find($id); $season->title = Input::get('title'); $season->save(); Session::flash('message', 'success!'); return Redirect::to('backend/season'); } // NOT WORKING public function destroy($id) { Season::destroy($id); Session::flash('message', 'success!'); return Redirect::to('backend/season/'); } } 

Мой маршрут следующий:

 Route::resource('backend/season', 'SeasonAdminController'); 

Тег формы на странице редактирования:

 {{ Form::model($season, array('route' => array('backend.season.update', $season->ID), 'method' => 'PUT')) }} 

Форма для удаления записи:

 {{ Form::open(array('url' => 'backend/season/' . $value->ID, 'class' => 'pull-right')) }} {{ Form::hidden('_method', 'DELETE') }} {{ Form::submit('Löschen', array('class' => 'btn btn-danger')) }} {{ Form::close() }} 

Что мне здесь не хватает. Я благодарю вас за помощь, спасибо!

Ошибка заключалась в том, что вместо «id» в качестве первичного ключа в таблице базы данных я имел идентификатор «ID». Я не совсем уверен, почему это не должно работать, но я предполагаю, что это связано с основным ключом по умолчанию от Eloquent Model.

 public function update($id){ $inputs = Input::only(array('title')); if (!$id->update($inputs)) { Session::flash('message', 'Error!'); }else{ Session::flash('message', 'success!'); } return Redirect::to('backend/season'); } public function destroy($id){ if($id){ if($id->delete()){ Session::flash('message', 'Success: Deleted!'); }else{ Session::flash('message', 'Error: Not Deleted!'); } } return Redirect::to('backend/season'); } 

Попробуйте. Кстати, $ id не является идентификатором сезона, не может использовать find ($ id) на нем, потому что это объект.

Изменить: вы должны следовать этому руководству https://www.packtpub.com/books/content/laravel-4-creating-simple-crud-application-hours

Потому что вы еще не понимаете, как использовать модели в маршрутах. Обратите особое внимание на то, как формируются формы.

Проверьте свою модель

 class Session extends Model{ protected $table = 'session '; //DB table name protected $primaryKey = 'Id'; //Primary key Name... some time ORM cant identify the primary key }