• 更新数据.update
    • 函数原型
    • 用法如下:
    • 支持 forUpdate
    • 支持限制条件
    • 支持 orderBy
    • 支持 join
    • 绑定参数
    • 表达式支持

    更新数据.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. ]);