无法为模型的属性设置新值

Dim*_*ako 0 php laravel eloquent laravel-5

我正在尝试为Model的属性设置新值,但是它不起作用。我在设置新值后立即使用dd(),但它保留了旧值。

$business->users()
    ->where('userable_id', $business->id)
    ->where('userable_type', 'App\Models\Business')
    ->first()->first_name = "New";
Run Code Online (Sandbox Code Playgroud)

Tar*_*ych 7

尝试以下方法:

$business->users()
    ->where('userable_id', $business->id)
    ->where('userable_type', 'App\Models\Business')
    ->first()->update(['first_name' => "New"]);
Run Code Online (Sandbox Code Playgroud)

直接对象属性分配$model->attribute = 'foo';仅影响内存状态,不会在数据库中进行更改。

所以你要么去

$model->update(['attribute' => 'value']);
Run Code Online (Sandbox Code Playgroud)

要么

$model->attribute = 'value';
$model->save();
Run Code Online (Sandbox Code Playgroud)

参考


更新1:

如我在答案中的注释中所写,如果找不到任何模型,有时first()可能会返回null。我想建议firstOrFail()

请注意,没有预定义的处理程序ModelNotFoundexeption(通过抛出firstOrFail()),所以你想手动处理这种错误Handler类,否则你会得到默认的404 Laravel页。