Doctrine表ID作为数组ID

时间:2012-02-21 21:28:22

标签: php doctrine doctrine-1.2

我发现了一个非常有用的Doctrine函数,用于在表上设置一个属性,以便将数据库ID也作为生成的Doctrine_Collection中的键。此功能记录在此处:http://www.doctrine-project.org/projects/orm/1.2/docs/manual/component-overview/en#collection:key-mapping

现在的问题。我无法使用表对象本身,因为我需要在表上创建动态查询(而不是示例中的魔术查找器)。

我试过这段代码:

$doctrineTable = Doctrine_Core::getTable($table);
$doctrineTable->setAttribute(Doctrine_Core::ATTR_COLL_KEY, "id");
$q = $doctrineTable->createQuery("t");
foreach ($filter as $c => $v) // lopp thru coumns
    if (is_array($v)) // use whereIn if value is an array
        $q->andWhereIn("t." . $c, $v);
    elseif (is_null($v)) // use is null for null values
        $q->andWhere("t." . $c . " IS NULL");
    else // use where in other cases
        $q->andWhere("t." . $c . "=?", $v);
return $q->fetchAll();

不幸的是,结果集合仍然没有使用关联数组,而是使用0以上的正常数据。

任何人都知道如何在单个表上实现查询?

干杯, 丹尼尔

1 个答案:

答案 0 :(得分:1)

您正在寻找the INDEXBY keyword

  

INDEXBY关键字提供了将某些列映射为集合/数组键的方法。默认情况下,Doctrine将多个元素索引到数字索引的数组/集合。映射从零开始。要覆盖此行为,您需要使用INDEXBY关键字