使用 Yii 的 updateAll() 更新多行

Tur*_*ost 5 php yii2

我正在尝试更新 Yii 中的多行:

$list = array(1, 2, 3, 4, 5);

foreach($list as $id) {
    $query = "UPDATE products SET photos=crawler.photos, status=crawler.status WHERE id=crawler.product_id AND crawler.product_id=$id;";
}
Run Code Online (Sandbox Code Playgroud)

我是 Yii 的新手。基本上,我想用表products中的值更新表中的行scrape(使用特定的id,来自$list)。但不是与foreach(),而是与updateAll()。

sca*_*dge 1

我想应该是这样的

public function actionMyProductsUpdate($id)
{
    foreach ($queue as $item) {
        $myUpdate = "UPDATE products as a join crawler as b 
        on  (  a.id=b.product_id  and b.product_id= $item->id)
        SET a.photos=b.photos, a.status=b.status;";
         \Yii::$app->db->createCommand($myUpdate)->execute();    
    }

}
Run Code Online (Sandbox Code Playgroud)

版本2

public function actionMyProductsUpdate($id)
{

        $myUpdate = "UPDATE products as a join crawler as b 
        on  (  a.id=b.product_id  and b.product_id in  $list )
        SET a.photos=b.photos, a.status=b.status;";
         \Yii::$app->db->createCommand($myUpdate)->execute();    


}
Run Code Online (Sandbox Code Playgroud)