在Zend_Db_Table中获取包含连接表的完整行

时间:2009-09-16 16:10:20

标签: zend-framework zend-db zend-db-table

这是我的表结构。

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

我想从id获取带有section和category名称的文章行对象,而不是section_id和category_id,而是用户名而不是author_id和modified_by。

请帮帮我。

2 个答案:

答案 0 :(得分:9)

您需要使用Zend_Db_Table的{​​{1}}功能:

这样的事情应该有效:

setIntegrityCheck()

您可以使用以下命令检查生成的SQL:

$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);

请注意,返回的Zend_Debug::dump($select->__toString()); 对象是只读的。

答案 1 :(得分:1)

这超出了Zend_Db_Table的范围。 Zend_Db_Table可以很容易地获取其他行(see here),但它不会自动执行。您可能想查看Zend Framework Quick Start,它讨论了使用DataMapper模式,这可能是您想要查看的内容。

您必须扩展Zend_Db_Table_Row并在init()方法中查询其他表以获取所需信息。您可以通过覆盖rowClass变量来指定要在Zend_Db_Table类中使用的行类:

protected $_rowClass = 'FooRow';

来自评论:

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