Попробуйте вместо этого:
$business->users()
->where('userable_id', $business->id)
->where('userable_type', 'App\Models\Business')
->first()->update(['first_name' => "New"]);
Прямое назначение свойства объекта, например $model->attribute = 'foo';
, влияет только на состояние в памяти и не вносит изменений в базу данных.
Итак, вы хотитеперейти либо
$model->update(['attribute' => 'value']);
или
$model->attribute = 'value';
$model->save();
Ссылка
Обновление 1:
, как янаписано в комментариях к моему ответу, first()
может возвращать null
иногда, если ни одна модель не была найдена.Вместо этого я бы посоветовал firstOrFail()
.
Обратите внимание, что нет предопределенного обработчика для ModelNotFound
исключение (выбрасывается firstOrFail()
),так что вы бы хотели обработать такую ошибку вручную в классе Handler
, в противном случае вы получите страницу 404 Laravel по умолчанию.