这是我的表结构。
http://img6.imageshack.us/img6/8730/articlek.jpg
我想从 id 获取文章行对象,其中包含节和类别名称而不是 section_id 和 category_id ,以及用户名而不是 author_id 和 modified_by。
请帮我。
这是我的表结构。
http://img6.imageshack.us/img6/8730/articlek.jpg
我想从 id 获取文章行对象,其中包含节和类别名称而不是 section_id 和 category_id ,以及用户名而不是 author_id 和 modified_by。
请帮我。
您需要使用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
对象是只读的。
这超出了 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');