Я работаю над 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 }