获取 Zend_Db_Table 中连接表的完整行

发布于 2024-08-04 11:41:13 字数 266 浏览 10 评论 0原文

这是我的表结构。

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

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

请帮我。

This is my table structure.

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

I want to get a article row object from id with section and category names instead of section_id and category_id ,And user names instead of author_id and modified_by.

Please help me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

乖乖兔^ω^ 2024-08-11 11:41:13

您需要使用 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 code> 对象是只读的。

You need to use Zend_Db_Table's setIntegrityCheck() functionality:

Something like this should work:

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

You can check the SQL generated using:

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

Note that the returned Zend_Db_Table_Row object is read only.

无法言说的痛 2024-08-11 11:41:13

这超出了 Zend_Db_Table 的范围。 Zend_Db_Table 可以轻松获取其他行(参见此处< /a>) 但它不会自动执行此操作。您可能需要查看 Zend Framework 快速入门,它讨论了使用 DataMapper 模式和这可能是您想要调查的事情。

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

protected $_rowClass = 'FooRow';

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

This is outside of the scope of Zend_Db_Table. Zend_Db_Table can make it easy to get those other rows (see here) but it won't do it for automatically. You may want to check out the Zend Framework Quick Start, it talks about using the DataMapper pattern and that might be something you want to look into.

One option you do have to extend Zend_Db_Table_Row and in the init() method query the other tables for the information you need. You can specify a row class to use in your Zend_Db_Table class by overriding the rowClass variable:

protected $_rowClass = 'FooRow';

From comments:

require_once(dirname(realpath(__FILE__) . '/path/relative/to/articles/ArticleRow.php');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文