【问题标题】:specify key values for return $query->fetchArray()?为 return $query->fetchArray() 指定键值?
【发布时间】:2011-07-21 15:37:56
【问题描述】:

使用 Doctrine,我正在做一个类似这样的查询:

$query = Doctrine_Query::create()->select('id,name')->from('people');
return $query->fetchArray();

它返回一个类似于以下数组的对象:

array(3) {
  [0]=>
  array(4) {
    ["id"]=>
    string(1) "34"
    ["name"]=>
    string(7) "John"
  }
  [1]=>
  array(4) {
    ["id"]=>
    string(1) "156"
    ["name"]=>
    string(6) "Bob"
  }
  [2]=>
  array(4) {
    ["id"]=>
    string(1) "27"
    ["name"]=>
    string(7) "Alex"
  }
}

注意数组的键是如何从 0、1、2 等开始计数的?我的问题:是否可以指定您希望键值的来源?例如,我希望上述案例中的键值为 34、156 和 27。

我在 Doctrine 文档中注意到 fetchArray() 都有可以输入的参数,但它没有说明这些参数是什么......

public array fetchArray(string params)

http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_query.html#fetchArray()

另外,我显然可以用首选的键/值组合重新填充一个新数组,但我试图避免所需的额外处理。

【问题讨论】:

    标签: php sql doctrine doctrine-1.2 dql


    【解决方案1】:

    查看INDEXBY DQL 关键字。

    尝试类似:

    <?php
    $query = Doctrine_Query::create()
               ->select('p.id,p.name')
               ->from('people p INDEXBY p.id');
    

    【讨论】:

    • 成功了。谢谢!我还找到了Doctrine_Collection-&gt;setColumnKey() 方法,但它似乎没有做任何事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多