2016-05-31 11:42:42 8886次浏览 4条回答 2 悬赏 10 金钱

我有一条sql是这样的:update table set field_1=field_1+100,field_3=3 where field_1+100<=field_2;请教下用yii2中的AR怎么写才能最终执行这个sql,我用updateAllCounters出来的就都是field_1=field_1+100这样的形式无法出field_3=3这样直接赋值的了

  • 回答于 2016-05-31 13:55 举报

    有两种方法:
    第一种 AR 类是支持发送原生 SQL 的,例如:
    $result = User::findBySql('SELECT * FROM user where status = 10')->all();
    第二种:updateAll是可以用:abc传递参数的,例如:
    User::deleteAll('id = :status', [':status' => '7']);

  • 回答于 2016-05-31 13:56 举报

    快点把金钱给我

    2 条回复
    回复于 2016-05-31 17:01 回复

    zheyang yexing ?

    回复于 2016-06-01 11:25 回复

    别抢o(╯□╰)o

  • 回答于 2016-05-31 18:45 举报

    Yii::$app->db->createCommand($sql)->execute()

    觉得很赞
  • 回答于 2018-07-27 17:54 举报

    Yii2里可以使用model函数:updateAllCounters,如:
    User::updateAllCounters(['total'=>5], ['status'=>1])
    翻译为sql语句大概就是:
    UPDATE User SET total=total+5 WHERE status=1

您需要登录后才可以回答。登录 | 立即注册
addchild
见习主管

addchild

注册时间:2014-10-14
最后登录:2016-07-27
在线时长:9小时35分
  • 粉丝4
  • 金钱85
  • 威望20
  • 积分375

热门问题