Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Ilość zwracanych danych po odp bazy, doSelectJoinAll(), doSelectJoinObiekt().....
Ravv
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 8.02.2006

Ostrzeżenie: (0%)
-----


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' ((IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !)

Czy idzie jakoś wyeliminować bezużyteczny pkt. 1b)(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (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ąć?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

================================================================
Przykład:

Kod PHP:
  1. <?php
  2. public function executeLastNews()
  3.    {
  4.        $c = new Criteria();
  5.        $c->add( ArticlePeer::IS_PUBLISHED, true );
  6.        $c->add( CategoryPeer::IS_PUBLISHED, true );
  7.        $c->addDescendingOrderByColumn( ArticlePeer::CREATED_AT );
  8.        $c->setLimit( $this->items );
  9.        $this->articles = ArticlePeer::doSelectJoinCategory($c);
  10.    }// end executeLastNews();
  11. ?>


Wygenerowane zapytanie przez w/w funkcję doSelectJoinCategory():
  1. 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:

  1. ID CATEGORY_ID REGION_ID PICTURE TITLE SHORT_DESC DESC IS_PUBLISHED CREATED_AT UPDATED_AT ID NAME IS_PUBLISHED CREATED_AT
  2. 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.
  3. 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:

  1. <?php
  2. object(sfOutputEscaperArrayDecorator)#65 (3) {
  3.  ["count:private"]=>
  4.  NULL
  5.  ["value:protected"]=>
  6.  array(1) {
  7.    [0]=>
  8.    object(Article)#90 (18) {
  9.      ["id:protected"]=>
  10.      int(5)
  11.      ["category_id:protected"]=>
  12.      int(7)
  13.      ["region_id:protected"]=>
  14.      int(20)
  15.      ["picture:protected"]=>
  16.      string(17) "testowy_drugi.jpg"
  17.      ["title:protected"]=>
  18.      string(38) "Czy grozi nam powtórka zimy stulecia?"
  19.      ["short_desc:protected"]=>
  20.      string(201) "Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
  21. Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
  22. z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna.
  23. "
  24.      ["desc:protected"]=>
  25.      string(1227) "To jest pełny opis.
  26. Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
  27. Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
  28. z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna. Itd."
  29.      ["is_published:protected"]=>
  30.      bool(true)
  31.      ["created_at:protected"]=>
  32.      string(19) "2009-02-04 14:35:59"
  33.      ["updated_at:protected"]=>
  34.      string(19) "2009-02-04 14:35:59"
  35.      ["aCategory:protected"]=>
  36.      object(Category)#91 (14) {
  37.        ["id:protected"]=>
  38.        int(7)
  39.        ["name:protected"]=>
  40.        string(5) "Teatr"
  41.        ["is_published:protected"]=>
  42.        bool(true)
  43.        ["created_at:protected"]=>
  44.        string(19) "2009-02-04 14:35:59"
  45.        ["collThemaCategorys:protected"]=>
  46.        NULL
  47.        ["lastThemaCategoryCriteria:private"]=>
  48.        NULL
  49.        ["collArticles:protected"]=>
  50.        array(1) {
  51.          [0]=>
  52.          object(Article)#90 (18) {
  53.            ["id:protected"]=>
  54.            int(5)
  55.            ["category_id:protected"]=>
  56.            int(7)
  57.            ["region_id:protected"]=>
  58.            int(20)
  59.            ["picture:protected"]=>
  60.            string(17) "testowy_drugi.jpg"
  61.            ["title:protected"]=>
  62.            string(38) "Czy grozi nam powtórka zimy stulecia?"
  63.            ["short_desc:protected"]=>
  64.            string(201) "Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
  65. Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
  66. z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna.
  67. "
  68.            ["desc:protected"]=>
  69.            string(1227) "To jest pełny opis.
  70. Najbliższy tydzień upłynie pod znakiem gwałtownego ochłodzenia.
  71. Temperatury spadną nawet poniżej -25 stopni. Czy grozi nam powtórka
  72. z zimy stulecia? Wtedy też nic nie zapowiadało fali zimna. Itd."
  73.            ["is_published:protected"]=>
  74.            bool(true)
  75.            ["created_at:protected"]=>
  76.            string(19) "2009-02-04 14:35:59"
  77.            ["updated_at:protected"]=>
  78.            string(19) "2009-02-04 14:35:59"
  79.            ["aCategory:protected"]=>
  80.            object(Category)#91 (14) {
  81.              ["id:protected"]=>
  82.              int(7)
  83.              ["name:protected"]=>
  84.              string(5) "Teatr"
  85.              ["is_published:protected"]=>
  86.              bool(true)
  87.              ["created_at:protected"]=>
  88.              string(19) "2009-02-04 14:35:59"
  89.              ["collThemaCategorys:protected"]=>
  90.              NULL
  91.              ["lastThemaCategoryCriteria:private"]=>
  92.              NULL
  93.              ["collArticles:protected"]=>
  94.              array(1) {
  95.                [0]=>
  96.                *RECURSION*
  97.              }
  98.              ["lastArticleCriteria:private"]=>
  99.              NULL
  100.              ["alreadyInSave:protected"]=>
  101.              bool(false)
  102.              ["alreadyInValidation:protected"]=>
  103.              bool(false)
  104.              ["validationFailures:protected"]=>
  105.              array(0) {
  106.              }
  107.              ["_new:private"]=>
  108.              bool(false)
  109.              ["_deleted:private"]=>
  110.              bool(false)
  111.              ["modifiedColumns:protected"]=>
  112.              array(0) {
  113.              }
  114.            }
  115.            ["aRegion:protected"]=>
  116.            NULL
  117.            ["alreadyInSave:protected"]=>
  118.            bool(false)
  119.            ["alreadyInValidation:protected"]=>
  120.            bool(false)
  121.            ["validationFailures:protected"]=>
  122.            array(0) {
  123.            }
  124.            ["_new:private"]=>
  125.            bool(false)
  126.            ["_deleted:private"]=>
  127.            bool(false)
  128.            ["modifiedColumns:protected"]=>
  129.            array(0) {
  130.            }
  131.          }
  132.        }
  133.        ["lastArticleCriteria:private"]=>
  134.        NULL
  135.        ["alreadyInSave:protected"]=>
  136.        bool(false)
  137.        ["alreadyInValidation:protected"]=>
  138.        bool(false)
  139.        ["validationFailures:protected"]=>
  140.        array(0) {
  141.        }
  142.        ["_new:private"]=>
  143.        bool(false)
  144.        ["_deleted:private"]=>
  145.        bool(false)
  146.        ["modifiedColumns:protected"]=>
  147.        array(0) {
  148.        }
  149.      }
  150.      ["aRegion:protected"]=>
  151.      NULL
  152.      ["alreadyInSave:protected"]=>
  153.      bool(false)
  154.      ["alreadyInValidation:protected"]=>
  155.      bool(false)
  156.      ["validationFailures:protected"]=>
  157.      array(0) {
  158.      }
  159.      ["_new:private"]=>
  160.      bool(false)
  161.      ["_deleted:private"]=>
  162.      bool(false)
  163.      ["modifiedColumns:protected"]=>
  164.      array(0) {
  165.      }
  166.    }
  167.  }
  168.  ["escapingMethod:protected"]=>
  169.  string(16) "esc_specialchars"
  170. }
  171. ?>


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


aaa, rozumiem. czyli po prostu w schema.yml tworzysz widok a nie tabele?
tylko to jest chyba strasznie sztywne rozwiązanie.
no i jeszcze nie wiem za bardzo jak to ugryźć.
załóżmy, że mam model profil. tam nadpisałem metody lub stworzyłem nowe metody np. getNazwa, setPseudonim itd.
tworząc widok, który miałby pobierać dane profilu połączone jeszcze z 5 innymi metodami z których metod będę mógł skorzystać? czy tych z modelu profil czy tylko tych z modelu tego widoku?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

EDIT:

już wiem o co chodzi
http://zawadzinski.com/2008/01/15/how-to-u...ews-in-symfony/

trzeba będzie spróbować to wdrożyć:) a nie czekać, aż serwer sam zdechnie. aczkolwiek nie wiem czy jest sens, bo może się okazać, że taniej wyjdzie przenieść się na dedyka i dokładać RAM.
Go to the top of the page
+Quote Post

Posty w temacie
- Ravv   [Symfony] Ilość zwracanych danych po odp bazy   5.02.2009, 12:47:30
- - SongoQ   Najlepszym rozwiazaniem jest vidok. Dodaje sporego...   5.02.2009, 14:13:52
- - Ravv   Nie no, jeszcze widoki tworzyć? Tylko po to by móc...   5.02.2009, 14:56:31
- - SongoQ   Ok, widze ze wiele teorii przed Toba. Co to Propel...   5.02.2009, 22:42:59
- - Ravv   No tak, rację masz że ORM stanowi dla mnie (jeszcz...   6.02.2009, 09:19:19
- - AxZx   ja się zastanawiam czy to z czym Ty masz problem b...   6.02.2009, 10:49:32
- - Ravv   Budując system do obsługi bloga, do obsługi galeri...   6.02.2009, 11:08:55
- - AxZx   może coś z var_dump jest nie tak? też jak sprawdza...   6.02.2009, 11:43:14
- - Ravv   Z tego co wiem to Doctrine jest tak samo zasobożer...   6.02.2009, 11:54:53
- - SongoQ   @Ravv pomijajac juz sens propela bo to juz mam nad...   6.02.2009, 12:30:08
- - Ravv   Baza: [SQL] pobierz, plaintext propel: [b...   6.02.2009, 12:55:40
- - SongoQ   No to teraz zobacz - ArticlePeer::doSelectJoinAll(...   6.02.2009, 13:10:00
- - Ravv   Zacząłem kombinować z tymi kryteriami sukcesywnie ...   6.02.2009, 14:25:50
- - SongoQ   Jest tak jak powinno byc. W jednym zapytaniu chesz...   6.02.2009, 14:33:07
- - AxZx   utworzyć widok w bazie to jest jedno rozwiązanie, ...   6.02.2009, 14:51:25
- - SongoQ   @AxZx Tylko poprawienie metod nie zmieni Ci zbyt w...   6.02.2009, 16:29:03
- - AxZx   a po co tworzyć widoki? po co w ogóle robić te dod...   6.02.2009, 17:33:13
- - SongoQ   Widok w propelu to tak naprawde model do oczytu. A...   6.02.2009, 18:50:03
- - AxZx   aaa, rozumiem. czyli po prostu w schema.yml tworzy...   7.02.2009, 01:42:28
- - SongoQ   Uwierz mi ze nawet jesli przenieszesz to na dedyka...   7.02.2009, 10:26:34
- - AxZx   a można zrobić tak jak pisałem wcześniej? że w sch...   7.02.2009, 11:09:42
- - SongoQ   Tylko jak bedziesz pobieral juz w template zalezne...   7.02.2009, 13:14:05
- - AxZx   no nie zupełnie. bo wtedy w addjoin będzie dołącza...   7.02.2009, 13:55:12
- - SongoQ   A wyobrazasz sobie kryteria do 3 tabel z grupowani...   9.02.2009, 09:23:12


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 17:54