数据修改

  1. 使用 get()方法通过主键获取数据,然后通过 save()方法保存修改,返回布尔值;
    1. $user = UserModel::get(118);
    2. $user->username = '李黑';
    3. $user->email = 'lihei@163.com';
    4. $user->save();
  2. 通过 where()方法结合 find()方法的查询条件获取的数据,进行修改;
    1. $user = UserModel::where('username', '李黑')->find();
    2. $user->username = '李白';
    3. $user->email = 'libai@163.com';
    4. $user->save();
  3. save()方法只会更新变化的数据,如果提交的修改数据没有变化,则不更新;
    4. 但如果你想强制更新数据,即使数据一样,那么可以使用 force()方法;
    1. $user->force()->save();
  4. Db::raw()执行 SQL 函数的方式,同样在这里有效;
    1. $user->price = Db::raw('price+1');
  5. 如果只是单纯的增减数据修改,可以使用 inc/dec;
    1. $user->price = ['inc', 1];
  6. 直接通过 save([],[])两个数组参数的方式更新数据;
    1. $user->save([
    2. 'username' => '李黑',
    3. 'email' => 'lihei@163.com' ],
    4. ['id'=>118]);
  7. 通过 saveAll()方法,可以批量修改数据,返回被修改的数据集合;
    1. $list = [
    2. ['id'=>118, 'username'=>'李白', 'email'=>'libai@163.com'],
    3. ['id'=>128, 'username'=>'李白', 'email'=>'libai@163.com'],
    4. ['id'=>129, 'username'=>'李白', 'email'=>'libai@163.com']
    5. ];
    6. $user->saveAll($list);
  8. 批量更新 saveAll()只能通过主键 id 进行更新;
    10. 使用静态方法结合 update()方法来更新数据,这里返回的是影响行数;
    1. UserModel::where('id', 118)->update([
    2. 'username' => '李黑',
    3. 'email' => 'lihei@163.com'
    4. ]);
  9. 另外一种静态方法 update(),返回的是对象实例;
    1. UserModel::update([
    2. 'id' => 118,
    3. 'username' => '李黑',
    4. 'email' => 'lihei@163.com'
    5. ]);
  10. 模型的新增和修改都是 save()进行执行的,它采用了自动识别体系来完成;
    13. 实例化模型后调用 save()方法表示新增,查询数据后调用 save()表示修改;
    14. 当然,如果在 save()传入更新修改条件后也表示修改;
    15. 再当然,如果编写的代码比较复杂的话,可以用 isUpdate()方法显示操作;
    1. //显示更新
    2. $user->isUpdate(true)->save();
    3. //显示新增
    4. $user->isUpdate(false)->save();

    数据查询

  11. 使用 get()方法,通过主键(id)查询到想要的数据;
    1. $user = UserModel::get(129);
    2. return json($user);
  12. 也可以使用 where()方法进行条件筛选查询数据;
    1. $user = UserModel::where('username', '辉夜')->find();
    2. return json($user);
  13. 不管是 get()方法还是 find()方法,如果数据不存在则返回 Null;
    4. 和数据库查询一样,模型也有 getOrFail()方法,数据不存在抛出异常;
    5. 同上,还有 findOrEmpty()方法,数据不存在返回空模型;
    6. 通过模型->符号,可以得到单独的字段数据;
    1. return $user->username;
  14. 如果在模型内部获取数据,请不要用$this->username,而用如下方法;
    1. public function getUserName()
    2. {
    3. return self::where('username', '辉夜')->find()->getAttr('username');
    4. }
  15. 通过 all()方法,实现 IN 模式的多数据获取;
    1. $user = UserModel::all('79, 118, 128');
    2. $user = UserModel::all([79, 118, 128]);
  16. 使用链式查询得到想要的数据;
    1. UserModel::where('gender', '男')->order('id', 'asc') ->limit(2)->select();
  17. 获取某个字段或者某个列的值;
    1. UserModel::where('id', 79)->value('username');
    2. UserModel::whereIn('id',[79,118,128])->column('username','id');
  18. 模型支持动态查询:getBy表示字段名;
    1. UserModel::getByUsername('辉夜');
    2. UserModel::getByEmail('huiye@163.com');
  19. 模型支持聚合查询;
    1. UserModel::max('price');