save

返回

save方法成功返回true
并且只有当before_insert事件返回false的时候返回false,一旦有错误就会抛出异常。所以无需判断返回类型。

过滤字段

save()前使用allowField()方法

$user = new User;
// post数组中只有name和email字段会写入
$user->allowField(['name','email'])->save($_POST);

建议在参数接收的时候就用Request请求对象直接过滤

$user = new User;
// 过滤post数组中的非数据表字段数据
$data = Request::only(['name','email']);
$user->save($data);

replace写入

save()前使用replace()方法

$user           = new User;
$user->name     = 'thinkphp';
$user->email    = 'thinkphp@qq.com';
$user->replace()->save();
saveAll

批量新增,如果数据中存在主键的时候会认为是更新操作

$user = new User;
$list = [
    ['name'=>'thinkphp','email'=>'thinkphp@qq.com'],
    ['name'=>'onethink','email'=>'onethink@qq.com']
];
$user->saveAll($list);

返回

saveAll方法新增数据返回的是包含新增模型(带自增ID)的数据集对象。

create

返回

和save方法不同的是,create方法返回的是当前模型的对象实例

过滤字段

过滤字段,给create传递第二个参数

$user = User::create([
    'name'  =>  'thinkphp',
    'email' =>  'thinkphp@qq.com'
], ['name', 'email']);

replace写入

create方法传递第三个参数

$user = User::create([
    'name'  =>  'thinkphp',
    'email' =>  'thinkphp@qq.com'
], ['name','email'], true);