Witam.
Czy normalne jest że ilość zwracanych danych przez obiekt sfOutputEscaperArrayDecorator (po wywołaniu polecenia doSelectJoinAll*()) jest nad wyraz duża?
W sumie wygląda na to że pobierając np. jeden artykuł z tabeli z artykułami (czyli jeden wiersz) z bazy przy pomocy np. doSelectJoinAutor() by np. prócz ID autora dostać też jego Nazwisko (z osobnej tabeli 'Autor') -> Propel zwraca:
1) obiekt 'Artykuł' (ok)
1a) obiekt 'Autor' powiązany z poprzednim obiektem 'Artykuł' (ok)
1b) wszystkie obiekty 'Artykuł' powiązane z pobranym punkt wcześniej obiektem 'Autor' (

!)
Czy idzie jakoś wyeliminować bezużyteczny pkt. 1b)

(oczywiście bezużyteczny gdy pobrane dane chcę tylko wyświetlić)
Bo jeżeli chcę pobrać jeden artykuł i jego autora, to propel zwróci mi tenże artykuł oraz dane autora, a poza tym 1000 obiektów typu 'Artykuł', które należą do tegoż autora....
Poprawnie to rozumiem? Jak tego uniknąć?

================================================================
Przykład:Kod PHP:
<?php
public function executeLastNews()
{
$c = new Criteria();
$c->add( ArticlePeer::IS_PUBLISHED, true );
$c->add( CategoryPeer::IS_PUBLISHED, true );
$c->addDescendingOrderByColumn( ArticlePeer::CREATED_AT );
$c->setLimit( $this->items );
$this->articles = ArticlePeer::doSelectJoinCategory($c);
}// end executeLastNews();
?>
Wygenerowane zapytanie przez w/w funkcję doSelectJoinCategory():
SELECT article.ID, article.CATEGORY_ID, article.REGION_ID, article.PICTURE, article.TITLE, article.SHORT_DESC, article.DESC, article.IS_PUBLISHED, article.CREATED_AT, article.UPDATED_AT, category.ID, category.NAME, category.IS_PUBLISHED, category.CREATED_AT FROM `article` LEFT JOIN category ON (article.CATEGORY_ID=category.ID) WHERE article.IS_PUBLISHED=1 AND category.IS_PUBLISHED=1 ORDER BY article.CREATED_AT DESC LIMIT 3
Zwrócone przez bazę wyniki:
ID CATEGORY_ID REGION_ID PICTURE TITLE SHORT_DESC DESC IS_PUBLISHED CREATED_AT UPDATED_AT ID NAME IS_PUBLISHED CREATED_AT
5 7 20 testowy_drugi.jpg Czy grozi nam powtórka zimy stulecia? Najbliższy tydzień upłynie pod znakiem gwałtownego... TO jest pełny opis.
Najbliższy tydzień upłynie pod... 1 2009-02-04 14:35:59 2009-02-04 14:35:59 7 Teatr 1 2009-02-04 14:35:59
( wiem że ostatnie pole może mało czytelne, ale WSZYSTKO do tej pory jest naprawdę super, tak jak powinno być! )
Tyle że........
podczas var_dump( $articles ) dostaję taki oto obiekt:
<?php
object(sfOutputEscaperArrayDecorator)#65 (3) {
["count:private"]=>
NULL
["value:protected"]=>
[0]=>
object(Article)#90 (18) {
["id:protected"]=>
int(5)
["category_id:protected"]=>
int(7)
["region_id:protected"]=>
int(20)
["picture:protected"]=>
string(17) "testowy_drugi.jpg"
["title:protected"]=>
string(38) "Czy grozi nam powtórka zimy stulecia?"
["short_desc:protected"]=>
string(201) "Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna.
"
["desc:protected"]=>
string(1227) "To jest pełny opis.
Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna. Itd."
["is_published:protected"]=>
bool(true)
["created_at:protected"]=>
string(19) "2009-02-04 14:35:59"
["updated_at:protected"]=>
string(19) "2009-02-04 14:35:59"
["aCategory:protected"]=>
object(Category)#91 (14) {
["id:protected"]=>
int(7)
["name:protected"]=>
string(5) "Teatr"
["is_published:protected"]=>
bool(true)
["created_at:protected"]=>
string(19) "2009-02-04 14:35:59"
["collThemaCategorys:protected"]=>
NULL
["lastThemaCategoryCriteria:private"]=>
NULL
["collArticles:protected"]=>
[0]=>
object(Article)#90 (18) {
["id:protected"]=>
int(5)
["category_id:protected"]=>
int(7)
["region_id:protected"]=>
int(20)
["picture:protected"]=>
string(17) "testowy_drugi.jpg"
["title:protected"]=>
string(38) "Czy grozi nam powtórka zimy stulecia?"
["short_desc:protected"]=>
string(201) "Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna.
"
["desc:protected"]=>
string(1227) "To jest pełny opis.
Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna. Itd."
["is_published:protected"]=>
bool(true)
["created_at:protected"]=>
string(19) "2009-02-04 14:35:59"
["updated_at:protected"]=>
string(19) "2009-02-04 14:35:59"
["aCategory:protected"]=>
object(Category)#91 (14) {
["id:protected"]=>
int(7)
["name:protected"]=>
string(5) "Teatr"
["is_published:protected"]=>
bool(true)
["created_at:protected"]=>
string(19) "2009-02-04 14:35:59"
["collThemaCategorys:protected"]=>
NULL
["lastThemaCategoryCriteria:private"]=>
NULL
["collArticles:protected"]=>
[0]=>
*RECURSION*
}
["lastArticleCriteria:private"]=>
NULL
["alreadyInSave:protected"]=>
bool(false)
["alreadyInValidation:protected"]=>
bool(false)
["validationFailures:protected"]=>
}
["_new:private"]=>
bool(false)
["_deleted:private"]=>
bool(false)
["modifiedColumns:protected"]=>
}
}
["aRegion:protected"]=>
NULL
["alreadyInSave:protected"]=>
bool(false)
["alreadyInValidation:protected"]=>
bool(false)
["validationFailures:protected"]=>
}
["_new:private"]=>
bool(false)
["_deleted:private"]=>
bool(false)
["modifiedColumns:protected"]=>
}
}
}
["lastArticleCriteria:private"]=>
NULL
["alreadyInSave:protected"]=>
bool(false)
["alreadyInValidation:protected"]=>
bool(false)
["validationFailures:protected"]=>
}
["_new:private"]=>
bool(false)
["_deleted:private"]=>
bool(false)
["modifiedColumns:protected"]=>
}
}
["aRegion:protected"]=>
NULL
["alreadyInSave:protected"]=>
bool(false)
["alreadyInValidation:protected"]=>
bool(false)
["validationFailures:protected"]=>
}
["_new:private"]=>
bool(false)
["_deleted:private"]=>
bool(false)
["modifiedColumns:protected"]=>
}
}
}
["escapingMethod:protected"]=>
string(16) "esc_specialchars"
}
?>
I to tylko dla jednego rekordu... Jakbym chciał pobrać ich 100, to aż strach pomyśleć jak obciążyłoby to pamięć :/.
Obłęd.
Ten post edytował Ravv 5.02.2009, 21:32:37