【问题标题】:Duplicate Array key in Doctrine resultDoctrine 结果中的重复数组键
【发布时间】:2010-08-11 10:19:13
【问题描述】:

对于我正在构建的网站,我需要检查某个位置是否有合同,这些位置可以有直接链接到它们的合同,或者当较大组织的一部分也有链接到该组织的合同时。

我正在尝试使用 DQL 查询首先检查是否有直接链接的合同,然后是否有任何通过组织与此查询链接:

    $q = self::createQuery("l")
        ->select('sl.sc_id, sl.type, so.sc_id, so.type, l.naam, l.loc_id, l.straat, l.telefoon, l.plaats, l.postcode, l.huisnummer, l.huisnummer_achtervoegsel, o.naam')
        ->from('Locatie l, l.Organisatie o, l.Sc sl, o.Sc so')
        ->orderBy('o.naam, l.naam')
        ->execute();

它做了我想要的,它返回了一个包含我需要的所有数据的数组:

array(13) { 
["loc_id"]=> string(2) "93" ["org_id"]=> string(1) "9" ["naam"]=> string(12) "test" 
["Organisatie"]=> array(4) { ["org_id"]=> string(1) "9" ["naam"]=> string(3) "test"
["Sc"]=> array(1) { [0]=> array(6) { ["sc_id"]=> string(1) "1" ["sc_nummer"]=> NULL ["type"]=> string(6) "All-in" } } } 
["Sc"]=> array(0) { } 

}

问题是重复的 ["Sc"] 键,因为在 php 中,当数组有重复的键时,最后一个键会覆盖第一个键(无论如何我都读过),这使得无法进行如下检查:

if(!empty($SC) or !empty($SC2) {}

我似乎无法弄清楚如何以不同的方式使教义名称成为键之一,甚至可能将两者合并。

我尝试使用 INDEXBY,但这改变了 ['SC'] 数组中的键,而不是 ['SC'] 本身。

有什么想法吗?

【问题讨论】:

    标签: php mysql arrays doctrine dql


    【解决方案1】:

    您可以在查询中重命名它。因此,在您的示例中,这只会将 sc_id 更改为类似

    [...] sl.sc_id AS your_new_key [...]
    

    http://www.doctrine-project.org/projects/orm/1.2/docs/manual/dql-doctrine-query-language/en#select-queries:aggregate-values

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 2013-08-16
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多