2020-07-07 18:15:26 1990次浏览 2条回答 0 悬赏 10 金钱
$model = new ShopConsignee();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
    ShopConsignee::updateAll(['isdefualt' => 0], ['user_id' => Yii::$app->user->id]);
    $model->isdefualt = 1;
    $model->save();
    return $this->goBack();
}

上面代码的功能是将新增的收货地址设为默认,大佬给看看,这段代码是不是有问题?现在出现的问题是:第一次的添加是没法设成默认的,以后添加的都可以

public function actionResetDefaultConsignee()
{
    $consignee_id = Yii::$app->request->post('consignee_id');
    $consignee = ShopConsignee::findOne($consignee_id);
    if ($consignee) {
        ShopConsignee::updateAll(['isdefualt' => 0], ['isdefualt' => 1, 'user_id'=>Yii::$app->user->id]);
        $consignee->isdefualt = 1;
    }

    $this->O($consignee->save());
}

上面这段代码是通过ajax设置默认地址的,情况是点两次的话isdefualt会被置为0,感觉跟上面是同样的原因引起的,请大佬也给讲解下

补充于 2020-07-13 15:39

2020-07-13_153629.png

  • 回答于 2020-07-07 20:29 举报

    你可以看看 通过gii 看debug 更新sql都在的 你也可以加日志来辅助

    1 条回复
    回复于 2020-07-13 15:32 回复

    debug 工具栏里sql执行来看,update后的save没执行,为什么呢?

  • 回答于 2020-07-09 10:04 举报
    $model = new ShopConsignee();
    $model->isdefualt = 1;//或者设置isdefualt默认1
    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        ShopConsignee::updateAll(['isdefualt' => 0], ['user_id' => Yii::$app->user->id,['!=', 'id', $model->id]]);
    
        return $this->goBack();
    }
    
    1 条回复
    回复于 2020-07-13 15:45 回复

    可以的,或者把if里的save去掉也是可以的。想知道原因

    if ($model->load(Yii::$app->request->post())) {
                ShopConsignee::updateAll(['isdefualt' => 0], ['user_id' => Yii::$app->user->id]);
                $model->isdefualt = 1;
                $model->save();
                return $this->goBack();
            }
    
    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
涛哥
主管

涛哥

注册时间:2014-12-28
最后登录:2021-09-19
在线时长:28小时25分
  • 粉丝2
  • 金钱125
  • 威望20
  • 积分605

热门问题