Чтобы получить полную строку с таблицами соединения в Zend_Db_Table - PullRequest
1 голос
/ 16 сентября 2009

Это моя структура таблицы.

http://img6.imageshack.us/img6/8730/articlek.jpg

Я хочу получить объект строки статьи из id с именами разделов и категорий вместо section_id и category_id и именами пользователей вместо author_id иified_by.

Пожалуйста, помогите мне.

Ответы [ 2 ]

9 голосов
/ 17 сентября 2009

Вам необходимо использовать Zend_Db_Table setIntegrityCheck() функциональность:

Как-то так должно работать:

$articleTable = new Article();
$select = $articleTable->select();
$select->setIntegrityCheck(false);
$select->from('article', 'article.*');
$select->joinLeft('user', 'article.author_id = user.id', array('author_name'=>'author'));
$select->where('article.id = 123');
$articleRecord = $articleTable->fetchRow($select);

Вы можете проверить сгенерированный SQL, используя:

Zend_Debug::dump($select->__toString());

Обратите внимание, что возвращенный объект Zend_Db_Table_Row доступен только для чтения.

1 голос
/ 16 сентября 2009

Это выходит за рамки Zend_Db_Table. Zend_Db_Table может облегчить получение этих других строк ( см. Здесь ), но не будет делать это автоматически. Возможно, вы захотите проверить Zend Framework Quick Start , в нем говорится об использовании шаблона DataMapper, и это может быть то, что вы хотите изучить.

Одна опция, которую вам нужно расширить Zend_Db_Table_Row, и в методе init () запросить другие таблицы для получения необходимой информации. Вы можете указать класс строки для использования в вашем классе Zend_Db_Table, переопределив переменную rowClass:

protected $_rowClass = 'FooRow';

Из комментариев:

require_once(dirname(realpath(__FILE__) . '/path/relative/to/articles/ArticleRow.php');
...