Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么laravel save()会这样工作(有时返回false)_Php_Laravel - Fatal编程技术网

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

Php 为什么laravel save()会这样工作(有时返回false),php,laravel,Php,Laravel,laravel$user->save()是如何工作的 我对以下内容感兴趣 1) 我知道这个save()方法可能返回exception或false。我总是希望它返回exception,我从不希望它返回false。我如何做到这一点 2) save()何时返回false?我认为如果它不起作用,它应该一直返回异常。对于#1,您可以扩展模型并在错误时抛出异常: class BaseModel extends \Illuminate\Database\Eloquent\Model { public

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

我对以下内容感兴趣

1) 我知道这个save()方法可能返回exception或false。我总是希望它返回exception,我从不希望它返回false。我如何做到这一点

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

对于#1,您可以扩展模型并在错误时抛出异常:

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

$saved = $model->save();
if ($saved === false) {
    throw new \Exception("some text");
}
对于#2,您可以在此处查看源代码:


并检查
返回false的可能性

查看中的注释<代码>如果“saving”事件返回false,我们将退出保存并返回false,表示保存失败。这为任何侦听器提供了在验证失败或其他情况下取消保存操作的机会。如果要引发异常,请检查false,然后引发自己的异常。为什么它会返回false?这是您需要阅读的问题。它明确地说“如果“saving”事件返回false,我们将退出save并返回false”。抓取第648行可能更清楚,saving事件返回false,这就是save返回false的原因。