更新数据.update

函数原型

更新成功后,返回影响行数,没有修改记录返回 0。

  1. public function update($mixData, $arrBind = [], $bFlag = false);

用法如下:

  1. # UPDATE `test` SET `test`.`name`=:name WHERE `test`.`id` = 503
  2. /*
  3. (
  4. [name] => Array
  5. (
  6. [0] => 小猪
  7. [1] => 2
  8. )
  9. )
  10. */
  11. Db::table('test')->
  12. where('id', 503)->
  13. update(['name' => '小猪']);

支持 forUpdate

  1. # UPDATE `test` SET `test`.`name`=:name WHERE `test`.`id` = 503 FOR UPDATE
  2. /*
  3. (
  4. [name] => Array
  5. (
  6. [0] => 小猪
  7. [1] => 2
  8. )
  9. )
  10. */
  11. Db::table('test')->
  12. where('id', 503)->
  13. forUpdate()->
  14. update(['name' => '小猪']);

支持限制条件

  1. # UPDATE `test` SET `zt_test`.`name`=:name WHERE `test`.`id` = 503 LIMIT 0,2
  2. /*
  3. (
  4. [name] => Array
  5. (
  6. [0] => 小猪
  7. [1] => 2
  8. )
  9. )
  10. */
  11. Db::table('test')->
  12. where('id', 503)->
  13. top(2)->
  14. update(['name' => '小猪']);

支持 orderBy

  1. # UPDATE `test` SET `test`.`name`=:name WHERE `test`.`id` = 503 ORDER BY `test`.`id` DESC
  2. /*
  3. (
  4. [name] => Array
  5. (
  6. [0] => 小猪
  7. [1] => 2
  8. )
  9. )
  10. */
  11. Db::table('test')->
  12. where('id', 503)->
  13. orderBy('id desc')->
  14. update(['name' => '小猪']);

支持 join

  1. # UPDATE `test` `t` INNER JOIN `hello` `h` ON `t`.`id` = `h`.`size` SET `t`.`name`=:name WHERE `t`.`id` = 503
  2. /*
  3. (
  4. [name] => Array
  5. (
  6. [0] => 小猪
  7. [1] => 2
  8. )
  9. )
  10. */
  11. Db::table('test as t')->
  12. join('hello as h', '', 't.id', '=', '{[size]}')->
  13. where('id', 503)->
  14. update(['name' => '小猪']);

绑定参数

  1. # UPDATE `test` SET `test`.`name`=:hello,`test`.`value`=:questionmark_0 WHERE `test`.`id` = 503
  2. /*
  3. (
  4. [questionmark_0] => Array
  5. (
  6. [0] => 小牛逼
  7. [1] => 2
  8. )
  9. [hello] => hello world!
  10. )
  11. */
  12. Db::table('test')->
  13. where('id', 503)->
  14. bind('小牛逼')->
  15. update(
  16. [
  17. 'name' => '[:hello]',
  18. 'value' => '[?]',
  19. ],
  20. [
  21. 'hello' => 'hello world!',
  22. ]
  23. );

表达式支持

  1. # UPDATE `test` SET `zt_test`.`name` = concat(`test`.`value`,`test`.`name`) WHERE `test`.`id` = 503
  2. /*
  3. (
  4. )
  5. */
  6. Db::table('test')->
  7. where('id', 503)->
  8. update([
  9. 'name' => '{concat([value],[name])}',
  10. ]);