Doctrine 原则1.4使用fromArray()用关系填充集合

Doctrine 原则1.4使用fromArray()用关系填充集合,doctrine,Doctrine,我在原则1.4中执行了原始SQL查询(以实现高级子查询),并获得了一个包含不同表(评估和用户)数据的连接结果集: (这是我在数组$all中拥有的内容:) 所以我做了: $ret = new Doctrine_Collection('Evaluation'); $ret->fromArray($all); 它成功地填充了一个“评估”集合,但我还需要与每个评估关联的“用户”。我需要的信息已经在resultset中,但集合不会自动为每个评估对象创建用户对象 然后在视图中,我引用了打印用户名称的

我在原则1.4中执行了原始SQL查询(以实现高级子查询),并获得了一个包含不同表(评估和用户)数据的连接结果集:

(这是我在数组$all中拥有的内容:)

所以我做了:

$ret = new Doctrine_Collection('Evaluation');
$ret->fromArray($all);
它成功地填充了一个“评估”集合,但我还需要与每个评估关联的“用户”。我需要的信息已经在resultset中,但集合不会自动为每个评估对象创建用户对象

然后在视图中,我引用了打印用户名称的关系,而条令执行了大量实际上并不必要的查询

我知道有几种方法可以避免这种情况,但更自然的方法(我认为)是通过相关对象的填充,然后以常规方式访问它们

那怎么办呢?

我想出来了

在将结果集馈送到
Evaluation::fromArray()
之前,我必须自己迭代结果集,创建一个“User”对象:

以下是方法:

$q->execute($params);
$all = $q->fetchAll(PDO::FETCH_ASSOC);
Utilities::array2table($all);   // here I print the raw PDO resultset to debug it

foreach($all as $k => $v){
    $u = new User();
    $u->fromArray($v);
    $all[$k]['User'] = $u;
    // Create a Doctrine "User" and append it to the resultset
}

// Now create the evaluations just like I was before:

$ret = new Doctrine_Collection('Evaluation');
$ret->fromArray($all);
return $ret;
$q->execute($params);
$all = $q->fetchAll(PDO::FETCH_ASSOC);
Utilities::array2table($all);   // here I print the raw PDO resultset to debug it

foreach($all as $k => $v){
    $u = new User();
    $u->fromArray($v);
    $all[$k]['User'] = $u;
    // Create a Doctrine "User" and append it to the resultset
}

// Now create the evaluations just like I was before:

$ret = new Doctrine_Collection('Evaluation');
$ret->fromArray($all);
return $ret;