Я пытаюсь вызвать метод save () Eloquent в существующей записи, но получаю ошибку из Query Builder от Illuminate.
Следуя документации на веб-сайте Laravel по адресу http://laravel.com/docs/eloquent#insert-update-delete для обновления извлеченной модели, а также смотрите здесь пример: Laravel Eloquent ORM save: update vs create , мой код похоже, соответствует ожидаемому соглашению, но вместо этого я получаю ошибку, упомянутую в заголовке этого сообщения.
$this->employee = Employee::where('login', $login); $this->employee->first_name = 'John'; $this->employee->last_name = 'Doe'; $this->employee->save();
Класс Employee расширяет Eloquent, и если я создаю новый экземпляр модели, а затем устанавливаю некоторые атрибуты, а затем вызываю метод save (), он отлично выполняет инструкции insert. Что мне не хватает?
Очевидно, метод ->get()
не будет работать с методом Eloquent's ->save()
и вы должны использовать ->first()
вместо этого.
Правильно: $this->employee = Employee::where('login', $login)->first();
Неверно: $this->employee = Employee::where('login', $login)->get();
См. http://laravel.io/forum/06-04-2014-symfony-component-debug-exception-fatalerrorexception-call-to-undefined-method-illuminatedatabaseeloquentcollectionsave для дополнительной справки.
вы должны получить свою модель после того, как задано -> где
$this->employee = Employee::where('login', $login)->get();
или
$this->employee = Employee::where('login', $login)->first();
если вы не сделаете так, чтобы ваш объект $ this-> employee был бы одним, и вы не могли бы использовать -> save ()