PHP / Zend Framework:强制将表名前置到结果数组中的列名?

时间:2010-06-07 14:03:04

标签: php mysql zend-framework

我目前正在使用Zend_Db_Select从几个连接表中检索分层数据。我需要能够轻松地将其转换为数组。除了使用switch语句并单独列出所有列以便对数据进行排序之外,我的想法是,如果我可以将表名自动添加到结果数组中的键,那将解决我的问题。所以考虑以下(组装)SQL:

SELECT user.*, contact.* FROM user INNER JOIN contact ON contact.user_id = user.user_id

我通常会得到一个像这样的结果数组:

[username] => 'bob',
[contact_id] => 5,
[user_id] => 2,
[firstname] => 'bob',
[lastname] => 'larsen'

但我想要这个:

[user.user_id] => 2,
[user.username] => 'bob',
[contact.contact_id] => 5,
[contact.firstname] => 'bob',
[contact.lastname] => 'larsen'

有没有人知道如何实现这个目标?

谢谢!

2 个答案:

答案 0 :(得分:1)

不延长部分ZF的自动停放是AFAIK是不可能的。但是,您可以告诉它如何命名所获取的行集中的列:

$select->from(array('users'=>$this->_name),
    array('user_id' => 'id', 'user_name' => 'username'));

依旧......

答案 1 :(得分:1)

正如罗伯特巴西克所说,你需要扩展你的行和RowSet类来实现这一目标。看看这里开始http://framework.zend.com/manual/en/zend.db.table.rowset.html