2016-11-28 19:41:15 9048次浏览 5条回答 0 悬赏 10 金钱

UPDATE hs_borrow_repayment SET repaymentYesAccount=capital+ interest WHERE id= 13616 正常应该是这样的用了update 生成的sql当成一个字符串来处理了 UPDATE hs_borrow_repayment SET repaymentYesAccount='capital+ interest' WHERE id=13616

使用的

    $query = Yii::$app->db->createCommand()->update(BorrowRepayment::tableName(), ['repaymentYesAccount' => 'capital+ interest'], ['id' => 13616]);
  • 回答于 2016-11-29 09:45 举报

    楼主这样写试试看

    \Yii::$app->db->createCommand("UPDATE " . BorrowRepayment::tableName() . " SET repaymentYesAccount = capital+interest WHERE id=:id")
    ->bindValue(':id', 1)
    ->execute();
    

    然后,楼主这种情况建议不要这样处理,建议查看这里的一个解决方案看能否解决这个问题?

    当然在Model类里定义好 fields 方法后,获取数据的时候需要调用 toArray() 才能看到新增的数据。具体查看文档(http://www.yiichina.com/doc/api/2.0/yii-db-baseactiverecord#fields()-detail)

    2 条回复
    回复于 2016-11-29 12:38 回复

    我主要不想写原生SQL

    回复于 2016-11-29 16:57 回复

    那你看下我给的第二个建议,在model中使用fields字段进行新增,具体用法查看文档有demo。

  • 回答于 2016-11-29 09:58 举报

    $query = Yii::$app->db->createCommand("UPDATE ".BorrowRepayment::tableName()." SET repaymentYesAccount=capital+interest where id =13616 and capital is not null and interest is not null")->execute(); 楼上的和我的差不多,我这个加了个条件。这种DAO应该可行

    2 条回复
    回复于 2016-11-29 12:39 回复

    我主要不想写原生SQL 这个写原生方式我在手册里看到过 只是不想这么弄

    回复于 2018-08-01 20:33 回复

    Expression下就可以了

    new \yii\db\Expression("字段1 + 字段2")

    完整代码:
    Yii::$app->db->createCommand()->update('table', ['字段1'=> new \yii\db\Expression("字段1 + 字段2")], $condition)->execute();

  • 回答于 2017-05-19 10:50 举报

    楼主解决了吗?我也遇到了,我也不想写原生啊

  • 回答于 2018-05-16 09:27 举报

    你好,我想知道 如果b表中两个varchar型字段相加,比如一个字段b1 字段值是100,一个字段b2,字段值是200,想让他们相加得300;
    用update b set kjpsr=b1+b2;报错~说无效数字,你知道怎么回事么

  • 回答于 2020-11-04 15:13 举报

    Yii::$app->db->createCommand()->update('table', ['字段1'=> new \yii\db\Expression("字段1 + 字段2")], $condition)->execute();

您需要登录后才可以回答。登录 | 立即注册
凌晨1点58
职场新人

凌晨1点58

注册时间:2015-09-15
最后登录:2016-12-03
在线时长:7小时11分
  • 粉丝1
  • 金钱20
  • 威望0
  • 积分90

热门问题