2012-11-09 13 views
5

I nie może wydawać się przybić dokładnie zasada, co jest dodawane do tablicy przy użyciu toArray(), tak że gdybym miał zrobić coś takiego:Jakie są zasady, kiedy funkcja toArray() napędu Propela zwróci obiekty z odniesieniami lub tylko najwyższy poziom?

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

lub jakąś odmianę tego, czasami wydaje mi się, że wyniki uzyskują zarówno kolumny ze stolika owiec , jak i ich podprzestrzeni z pasterzem, ale czasami nie obejmuje go, więc muszę zrobić coś takiego, jak dodać wartości do nowej tablicy jak pętlę.

Czy ktoś może wskazać (link wyjaśniający), dlaczego tak się dzieje i zasady, które za nim stoją, więc nie jestem ślepo zgadywania, a jeśli istnieje lepszy sposób robienia tego samego powyżej, to jestem otwarty na sugestie .

Odpowiedz

3

Zwykle, jeśli chcesz, aby relacja znajdowała się wewnątrz toArray(), musisz pobrać ją lub, aby dołączyć do początkowego zapytania.

ten powróci jedynie informacje o obiektach Sheep:

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

ten powróci informacje o obiektach Sheepi ich stosunek do Shepherd jeśli jest jedna:

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

I tu jest dobry blog na temat o Getting To Know Propel 1.5: When You Really Need Arrays.

+0

Warto również wspomnieć o '$ includeForeignObjects' metody' toArray() 'z tego linku (domyślnie false) - dzięki – LeonardChallis

+0

Złe łącze nie jest już dostępne. – chaos0815

+0

Zaktualizowałem link. – j0k

Powiązane problemy