当propel的toArray()函数返回引用对象或仅返回顶层时,有哪些规则?

时间:2012-11-09 14:08:36

标签: php mysql propel

在使用toArray()时,我似乎无法确定添加到数组中的内容的确切经验,因为如果我要做这样的事情:

$sheep = SheepQuery::create()->find();
foreach ($sheep as $sheepii) {
  $sheepii->getShepherd();
}
return $sheep->toArray();

或者它的一些变体,有时我似乎得到了绵羊表它们的子列与牧羊人的列的结果,但有时它似乎不包括它,所以我必须做一些事情,比如在循环时将值添加到新数组中。

任何人都可以指出(链接解释)为什么会发生这种情况以及背后的规则所以我不是盲目地猜测,如果有一种更好的方法可以通过各种方式做同样的事情我会接受建议。

1 个答案:

答案 0 :(得分:3)

通常,如果您希望关系位于toArray()内,则需要获取在初始查询中进行连接。

这将仅返回对象Sheep的信息:

$sheep = SheepQuery::create()
  ->find();
$sheep->toArray();

这将返回对象Sheep Shepherd的关系的信息(如果有):

$sheep = SheepQuery::create()
  ->find()
  ->joinWith('Shepherd');
$sheep->toArray();

这是关于Getting To Know Propel 1.5: When You Really Need Arrays的好文章。