Подтвердить что ты не робот

Вызов метода undefined Illuminate\Database\Query\Builder:: save()

Я пытаюсь вызвать метод Eloquent save() в существующей записи, но получаю сообщение об ошибке из Illuminate Query Builder.

Следуя документации на веб-сайте 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(), он выполняет инструкции вставки просто отлично. Что мне не хватает?

4b9b3361

Ответ 1

По-видимому, метод ->get() не будет работать с методом Eloquent ->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.

Ответ 2

вам нужно получить вашу модель после того, как задано → где

$this->employee = Employee::where('login', $login)->get();

или

$this->employee = Employee::where('login', $login)->first();

если вы не сделаете так, чтобы ваш объект $this- > employee был бы одним, и вы не могли бы использовать → save()