2015-05-07 19:09:52 3113次浏览 4条回答 0 悬赏 3 金钱

ActiveRecord 中 find() , 怎么更新多条,如下:

id productID productname  status
1    2            3         0
2    2            4         0
3    2            5         0

怎么把productID =2 的 使用model->save(),一次性将status更新为2 。
这种情况,通常使用什么方式更新。 求助!

  • 回答于 2015-05-07 19:20 举报

    没怎么理解,是不是这样:

    $model = TableName::findAll(['productID' => 2]);
    $model->status = 2;
    $model->save();
    
    1 条回复
    回复于 2015-05-07 20:35 回复

    这样不行 ,$model->status = 2; 这一行会提示 : Attempt to assign property of non-object -

  • 回答于 2015-05-07 21:31 举报

    findAll是不行的,因为findAll得到是对象的集合,而集合是没有status这个属性的,所以你的问题在于,要么用AR则需要循环一条条更新,推荐你直接执行SQL语句,这样只需一次即可,自行拼接出SQL即可。

  • 回答于 2015-05-07 23:51 举报

    TableName::updateAll(['status' => 2], 'productID= :pid', [':pid' => 2]);
    为什么一定要用model->save() 呢?

  • 回答于 2015-05-09 22:33 举报

    大裤衩说的有道理的,可以参考。

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

bobysky

注册时间:2015-03-01
最后登录:2016-10-05
在线时长:23小时7分
  • 粉丝6
  • 金钱0
  • 威望0
  • 积分230

热门问题