使用ZF2更新类更新多个表

时间:2014-08-30 04:55:39

标签: php zend-framework2

我正在尝试使用zend框架更新类:http://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#zend-db-sql-update

创建类似于此处的语句:
http://dev.mysql.com/doc/refman/5.0/en/update.html

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

我已经尝试将数组传递给 - >表但是它在字符串转换时失败了。

// UPDATE `Array`
$update->table(['table1', 'table2']) 

我尝试过创建一个转义字符串,但在转换为sql时最终会被双重转义。

// UPDATE ``table1`,`table2``
$update->table("`table1`,`table2`")

我已经尝试过作弊并使用内爆将这些表粘在一起

// UPDATE `table1``,``table2`
$update->table(implode("`,`", ['table1','table2']))

有没有人对这个问题有一个干净的答案?

2 个答案:

答案 0 :(得分:0)

经过进一步研究,我不认为可以做到。我之所以这么说,是因为您提出的查询可能过于耗费资源。在寻找替代选项后,我遇到了Update one MySQL table with values from another。但是,我知道,Update对象上没有连接选项。所以至少在这个阶段,我不相信它可以做到。

答案 1 :(得分:0)

您是否正在尝试编写以下内容的sql:"更新tableOnetableTwo设置...." !我认为在sql中不可能。因为mySql不支持这种syntex,所以做zend。这是zend table方法 -

public function table($table)
@param  string|TableIdentifier $table

参数只是字符串或TableIdentifier。所以你必须在zend中编写两个sql

$update->table('table1');
$update->set(array('foo' => 'bar', 'baz' => 'bax'));
.......
........
$update->table('table2');
$update->set(array('foo1' => 'bar', 'baz1' => 'bax'));

希望它会对你有所帮助。