如何使用Zend_Db使用连接更新多个表?

时间:2011-08-12 16:15:52

标签: zend-framework zend-db

是否使用Zend_Db模块等效于以下SQL?

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

mysql manual

  

...多表UPDATE语句可以使用允许的任何类型的连接   SELECT语句,例如LEFT JOIN。

2 个答案:

答案 0 :(得分:3)

您始终可以执行查询字符串。

$db->query("UPDATE items,month SET items.price=month.price WHERE items.id=month.id")

免责声明:我没有测试过。

答案 1 :(得分:1)

使用MySQL,您可以JOIN使用UPDATE(左,右或内),就像使用SELECT语句一样。

您的代码如下所示:

$sql = <<<END
    UPDATE table1
    INNER JOIN table2 ON table1.id = table2.other_id
    SET table1.newvalue = 'value'
    WHERE table1.id = 99
        AND table2.other_value = 'value'
END;

$result = $db->query($sql);

$result变量将包含与适配器类型相关的对象。我使用PDO_MYSQL,所以最终得到了一个Zend_Db_Statement_Pdo对象。