博客列表 >ThinkPHP5使用模型新增数据

ThinkPHP5使用模型新增数据

路雲萧的博客
路雲萧的博客原创
2017年09月28日 18:48:391334浏览

一、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"
}



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议