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' (exclamation.gif!)

Czy idzie jakoś wyeliminować bezużyteczny pkt. 1b)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ąć?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

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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:06