接下来如何判断插入数据库成功呢?
//Laravel5.3 \Illuminate\Database\Eloquent\Model
public static function create(array $attributes = [])
{
$model = new static($attributes);
$model->save();
return $model;
}
public function save(array $options = [])
{
...
// If the "saving" event returns false we'll bail out of the save and return
// false, indicating that the save failed. This provides a chance for any
// listeners to cancel save operations if validations fail or whatever.
if ($this->fireModelEvent('saving') === false) {
return false;
}
...
}
看源码知道如果save失败,返回false
;如果成功,返回model。
laravel
中Eloquent create
如果成功,返回model
,如果失败执行SQL
失败,抛出异常,下面是我再tinker
中做的尝试:
php artisan tinker
Psy Shell v0.10.5 (PHP 8.0.1 — cli) by Justin Hileman
>>> $model = App\Model\Test\Tname::create(['id' => 19, 'name' => 'hjd', 'age' => 19]);
=> App\Model\Test\Tname {#4446
id: 19,
name: "hjd",
age: 19,
}
>>> App\Model\Test\Tname::create(['id' => 19, 'name' => 'hjd', 'age' => 19]);
Illuminate\Database\QueryException with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '19' for key 'id' (SQL: insert into `tname` (`id`, `name`, `age`) values (19, hjd, 19))'
>>>
$tname = new App\Model\Test\Tname;
=> App\Model\Test\Tname {#4457}
>>> $tname->id = 19
=> 19
>>> $tname->name='hjd';
=> "hjd"
>>> $tname->age='19';
=> "19"
>>> $tname->save();
Illuminate\Database\QueryException with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '19' for key 'id' (SQL: insert into `tname` (`id`, `name`, `age`) values (19, hjd, 19))'
QueryException
对象这里有说明laravel学习笔记save
返回的就是boolean
值,上面我测试和create
一样是抛出异常的如果需要捕获异常可以通过catch
<?php
use Illuminate\Database\QueryException;
try
{
Static::create();
}
catch(QueryException $e)
{
// error
}
在文档中有一句提示:
你也可以使用create
方法来保存新模型。 此方法会返回模型实例。 不过,在使用之前,你需要在模型上指定fillable
或guarded
属性,因为所有的Eloquent
模型都默认不可进行批量赋值。
2 回答1.3k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答854 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答910 阅读
1 回答894 阅读
1 回答823 阅读
laravel create 操作成功就会返回一个model