新添加代码:
$user = new User; $user->name = 'fangcms'; $user->email = 'fangcms@qq.com'; $user->save();
save方法成功会返回true,并且只有当before_insert事件返回false的时候返回false,一旦有错误就会抛出异常。所以无需判断返回类型。
也可以直接传入数据到save方法批量赋值:
$user = new User; $user->save([ 'name' => 'fangcms', 'email' => 'fangcms@qq.com'] );
默认只会写入数据表已有的字段,如果你通过外部提交赋值给模型,并且希望指定某些字段写入,可以使用:
$user = new User; // post数组中只有name和email字段会写入 $user->allowField(['name','email'])->save($_POST);
最佳的建议是模型数据赋值之前就进行数据过滤,例如:
$user = new User; // 过滤post数组中的非数据表字段数据 $data = Request::only(['name','email']); $user->save($data);
save方法新增数据返回的是写入的记录数(通常是1),而不是自增主键值。
Replace写入
save方法可以支持replace写入。
$user = new User;
$user->name = 'fangcms';
$user->email = 'fangcms@qq.com';
$user->replace()->save();
获取自增ID
如果要获取新增数据的自增ID,可以使用下面的方式:
$user = new User;
$user->name = 'fangcms';
$user->email = 'fangcms@qq.com';
$user->save();
// 获取自增ID
echo $user->id;
这里其实是获取模型的主键,如果你的主键不是id,而是user_id的话,其实获取自增ID就变成这样:
$user = new User;
$user->name = 'fangcms';
$user->email = 'fangcms@qq.com';
$user->save();
// 获取自增ID
echo $user->user_id;
不要在同一个实例里面多次新增数据,如果确实需要多次新增,可以使用后面的静态方法处理。