1

这是我的表结构。

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

我想从 id 获取文章行对象,其中包含节和类别名称而不是 section_id 和 category_id ,以及用户名而不是 author_id 和 modified_by。

请帮我。

4

2 回答 2

9

您需要使用Zend_Db_TablesetIntegrityCheck()功能:

像这样的东西应该工作:

$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对象是只读的。

于 2009-09-17T09:11:27.410 回答
1

这超出了 Zend_Db_Table 的范围。Zend_Db_Table 可以很容易地获取那些其他行(见这里),但它不会自动完成。您可能想查看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');
于 2009-09-16T16:43:25.993 回答