2014-08-30 2 views
0

Я пытаюсь использовать класс рамки Зенда обновления: http://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#zend-db-sql-updateОбновление нескольких таблиц с классом обновления ZF2

создать что-то вроде заявления здесь:
http://dev.mysql.com/doc/refman/5.0/en/update.html

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

Я пробовал передавая массив в -> table, но он не работает при преобразовании строки.

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

Я пробовал создавать экранированную строку, но при преобразовании в sql она заканчивается двойным экранированием.

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

Я попытался жульничество и использовать взрывать, чтобы использовать клей таблицы вместе

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

Кто-нибудь есть чистый ответ на этот вопрос?

ответ

0

После дальнейших исследований, я не думаю, что это можно сделать. Причина, по которой я говорю, заключается в том, что запрос, который вы предложили, может быть слишком ресурсоемким. После поиска альтернативного варианта я столкнулся с Update one MySQL table with values from another. Однако, что я знаю, нет опции соединения для объекта Update. Поэтому, по крайней мере, на этом этапе я не считаю, что это можно сделать.

+0

Все еще жду ответа! –

+0

Я попытался выполнить свой запрос вручную и оставил вторичную таблицу и использовал ее в инструкции WHERE и SET. Я получил сообщение об ошибке с сервера. – metric152

+0

Я обновил инструкцию sql, чтобы использовать формат в ответе, который вы опубликовали. Bummer, чтобы узнать, я не могу использовать класс zend на данный момент. Спасибо за помощь. – metric152

0

Вы пытаетесь написать sql like: "update tableOne, tableTwo set ...." !! Я не думаю, что это возможно в sql. Поскольку такой вид syntex не поддерживается mySql, так что zend. здесь zend table method -

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

параметр просто строка или TableIdentifier. Так что вам нужно написать два sql в zend

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

Надеюсь, это вам поможет.

+0

Связанный пример в верхней части вопроса показывает тот же оператор sql в документации mysql. Запрос работает, но я пытаюсь использовать класс Update. В настоящее время я пишу его вручную, используя запрос database->. Я пробовал копаться вокруг кода и видел функцию, о которой вы говорите. Он принимает только одну таблицу. Я надеялся, что вокруг этого есть способ. – metric152

Смежные вопросы