Удалить строку из Zend_Db_Table с помощью JOIN - PullRequest
5 голосов
/ 30 ноября 2011

Мне нужно удалить запись, используя Zend_Db_Table со ссылкой на таблицу rence. В SQL запрос будет выглядеть так:

DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

Есть ли способ сделать это более элегантным, чем приведенный ниже код?

$table = new Application_Model_DbTable_T1();
$sql = 'DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;';
$table->getAdapter()->query($sql);

Я нашел похожую тему , и похоже, что я должен использовать $table->getAdapter()->query($sql);, но я надеюсь на лучшее.

1 Ответ

1 голос
/ 11 ноября 2014

Нет, то, как вы описываете, это правильный способ сделать это.

Я предполагаю, что Application_Model_DbTable_T1 расширяет Zend_Db_Table_Abstract или его подкласс.Особенность Zend_Db_Table_Abstract в том, что он предназначен для работы только с одной таблицей.И вы пытаетесь получить доступ к нескольким таблицам в этом запросе.

Таким образом, способ сделать это - то же, что и вы.Извлеките адаптер, который не зависит от таблицы и может одновременно взаимодействовать с несколькими таблицами.

TL; DR: это правильный путь.

...