一、create()静态方法:新增单条记录
//1.参数为关联数组,其键值与要添加的表中字段对应
$res = Staff::create([
'name'=>'乔峰',
'salary'=>4090
]);
//2.传入第二个参数true,仅添加表中存在的字段
$res = Staff::create([
'name'=>'乔峰',
'salary'=>4090,
'level' => 2 //表中并无level字段
],true); //如果不加true参数,将报错并拒绝执行
//3.如仅更新指定字段,还可传入第三个参数(允许更新的字段名称数组)
$res = Staff::create([
'name'=>'阿朱',
'salary'=>7800,
'age'=>23,
'level'=>1 //表中无此字段,true参数可将它屏蔽
],true,['name','age']); //salary字段值不会写入表中
二、save()方法:新增单条记录
主要分为二步:
生成模型对象,并以属性方式创建要新增的数据;
save()方法可将当前模型对象属性当作字段,并写入表中,返回受影响记录数
//1.初始化模型对象方式来新增数据
$staff = new Staff(); //获取模型对象
$staff -> name = "段公子"; //给模型对象name属性赋值
$staff -> age = 24; //给模型对象age属性赋值
$staff -> salary = 8900; //给模型对象salary属性赋值
$res = $staff -> save(); //将数据写入表中,返回受影响记录数
dump($res); //输出: int(1)
//2.save([字段列表])传参方式新增
$staff = new Staff();
$res=$staff -> save([
'name' => '虚竹',
'age' => 30,
'salary' => 5400
]);
dump($res);
//3. allowField(true):过滤非表中字段
$staff = new Staff();
$res=$staff -> allowField(true)
-> save([
'name' => '虚竹',
'age' => 30,
'salary' => 5400,
'level' => 3 //非表字段,自动过滤
]);
dump($res);
//4.allowField([字段列表]):设置允许新增的字段
$staff = new Staff();
$res=$staff -> allowField(['name','age'])
-> save([
'name' => '方世玉',
'age' => 30,
'salary' => 3333, //不会新增
'level' => 3 //非表字段,自动过滤
]);
dump($res);
三、saveAll([二维关联数组]):新增多条记录
$staff = new Staff(); //获取模型对象
$res=$staff -> saveAll([ //新增多条数据放在二维关联数组中
['name'=>'乾隆','age'=>30, 'salary'=>9999],
['name'=>'和珅','age'=>40, 'salary'=>8888],
['name'=>'纪晓岚','age'=>50, 'salary'=>2222],
]); // 返回有三个元素的模型对象数组
// 遍历模型对象数组
foreach ($res as $val) {
dump($val -> getData()); //查看原始数组
}
//返回结果:
array(4) {
["name"] => string(6) "乾隆"
["age"] => int(30)
["salary"] => int(9999)
["id"] => string(2) "25"
}
array(4) {
["name"] => string(6) "和珅"
["age"] => int(40)
["salary"] => int(8888)
["id"] => string(2) "26"
}
array(4) {
["name"] => string(9) "纪晓岚"
["age"] => int(50)
["salary"] => int(2222)
["id"] => string(2) "27"
}