代码之家  ›  专栏  ›  技术社区  ›  Brian Lacy

php/zend framework:是否强制将结果数组中的表名前置为列名?

  •  1
  • Brian Lacy  · 技术社区  · 14 年前

    我正在使用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 回复  |  直到 14 年前
        1
  •  1
  •   Matt S    14 年前

    正如robertbasic回避的那样,您需要扩展row&rowset类来完成这一任务。看看这里开始吧 http://framework.zend.com/manual/en/zend.db.table.rowset.html

        2
  •  1
  •   robertbasic    14 年前

    不扩展ZF部分的AutoPrepending是不可能的。但是,您可以告诉它如何命名提取的行集中的列:

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

    等等…