为什么laravel save()像这样工作(有时返回false)

时间:2018-12-19 20:34:13

标签: php laravel

laravel $user->save()如何工作?

我对以下内容感兴趣。

1)我知道此save()方法可能返回异常或false。我一直希望它返回异常,而我从不希望它返回false。我该如何实现?

2)save()何时返回false?我认为如果它不起作用,它应该一直返回异常。

1 个答案:

答案 0 :(得分:2)

对于#1,您可以扩展模型并在false时引发异常:

class BaseModel extends \Illuminate\Database\Eloquent\Model
{
    public function save(array $options = [])
    {
        $saved = parent::save($options);
        if ($saved === false) {
            throw new \Exception("some text");
        }
    }
}

或者只是检查是否为假:

$saved = $model->save();
if ($saved === false) {
    throw new \Exception("some text");
}

对于#2,您可以在此处查看源代码:https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Model.php#L641

并检查return false的可能性。