4

を使用するときに配列に何が追加されるかについて、正確な経験則をtoArray()明確にすることはできないようです。

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

またはそのバリエーションとして、羊のテーブルの列と羊飼いのサブ配列の両方で結果が得られるように見える場合もありますが含まれていないように見える場合もあるため、値を追加するなどの操作を行う必要があります。ループするときに新しい配列に移動します。

なぜこれが起こるのか、そしてその背後にあるルールを誰かが指摘できますか(リンクを説明している)ので、私は盲目的に推測していません。上記と同じことを行うより良い方法があれば、私は提案を受け入れます。

4

1 に答える 1

3

通常、リレーションを内部に配置する場合は、リレーションをtoArray()フェッチする、最初のクエリ内で結合する必要があります。

これにより、オブジェクトの情報のみが返されますSheep

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

Sheep これにより、オブジェクトの情報とShepherd、オブジェクトがある場合はそれらの関係が返されます。

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

そして、ここにPropel 1.5を知ることについての良いブログ投稿があります:あなたが本当にアレイを必要とするとき。

于 2012-11-09T14:30:26.463 に答える