2017-04-14 81 views
0

基于下面的代码,我想更新所有在客户状态1,其中status = 2.但是,我想运行下面的代码customer_id不在(1,3,5, 8)。Yii 2更新全部不在

$customerNotIn = array(1, 3, 5 ,8); 
Customer::updateAll(['status' => 1], 'status = 2'); 

我该如何做到这一点?

回答

2

条件可以在你放什么在->where()的格式,所以你的情况应该是:

$customerNotIn = array(1, 3, 5 ,8); 
Customer::updateAll(['status' => 1], ['AND', 
    'status = 2', 
    ['NOT IN', 'status', $customerNotIn] 
]); 
+0

这是不正确的。这将变为状态1,而不是1,3,5,8。我想要的是将状态更改为2.但不在customer_id = 1,3,5,8 – CloudSeph

+0

您的意思是你需要两个条件?我不明白。什么样的最终状态应该是什么以及在什么条件下? – gmc

+0

是的。我需要两个条件 – CloudSeph