Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [cakephp] Problem z modelem
mr.r
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 14.08.2006

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


Dopiero zaczynam swoją przygode z CakePHP, napotkałem na pewien problem podczas budowy modelu odpowiedzialnego za newsy.

Próbuje przerobić poniższe zapytanie:
  1. SELECT a.id,
  2. a.news_title,
  3. a.news_content,
  4. a.news_author,
  5. a.news_date,
  6. COUNT(b.id) AS news_comments_count,
  7. d.user_name
  8. FROM news a
  9. LEFT JOIN comments b ON b.comment_parent = a.id
  10. LEFT JOIN users d ON d.id = a.news_author
  11. GROUP BY a.id
  12. ORDER BY a.id DESC


na model bez większego powodzenia. Narazie tyle mam:
  1. <?php
  2. class News extends AppModel
  3. {
  4. var $name = 'News';
  5.  
  6. var $belongsTo = array('User' =>
  7.  array('className' => 'Users',
  8.  'conditions'  => '',
  9.  'order' => '',
  10.  'foreignKey'  => 'news_author',
  11.  'counterCache' => '' 
  12.  )
  13. );
  14.  var $hasAndBelongsToMany = array('Comms' =>
  15.  array('className' => 'Comments',
  16.  'joinTable' => 'comments',
  17.  'foreignKey' => 'comment_parent',
  18.  'associationForeignKey'=> 'id',
  19.  'conditions' => '',
  20.  'order' => '',
  21.  'limit' => '',
  22.  'uniq'  => true,
  23.  'finderSql' => '',
  24.  'deleteQuery'=> '',
  25.  )
  26. );
  27. }
  28. ?>


Pobiera co prawda newsy, autora i komentarze ale wykonuje przy tym 39 zapytań do bazy, czyli tyle ile jest newsów, jakby bylo ich 100 to pewnie by wykonało ~100 zapytań (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Liczenia ile komentarzy ma poszczególny news, nie udało mi sie zaimplementować do modelu.

Licze na pomoc... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował mr.r 15.08.2006, 10:56:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
mariuszn3
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

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


heh.. wygląda to bardzo topornie..
Też jestem bardzo ciekaw czy faktycznie aż takie ograniczenia wiążą się z wykorzystaniem cake'a?
Może znajdzie się jakaś mądra doświadczona w cake'u głowa, która to rozjaśni..?

Właśnie mam zająć się kodowaniem jednego portalu dla jednej firmy i jako, że nie chcą się uzależniać bardzo ode mnie wolą zastosować jakiś znany OS framework.. zaproponowałem im Cake'a i zaczynam się bać (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

Ten post edytował mariuszn3 15.08.2006, 14:29:19
Go to the top of the page
+Quote Post
nrm
post
Post #3





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


ja wlasnie z tego wzgledu uzywam tylko $this->query(); idzie mi syzbciej i mam pelna kontrole nad tym co robie, a dodatkowo jeszcze mam dopisany cache na pytania sql.

niestety nie pomoge ci z tym pytaniem bo wlasnie po takich samych walkach (wielogodzinnych) stwierdzilem, ze to pier*** (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) nie dosc, ze clzowiek sie napisze jak glupi to jeszcze wydajnosc tych rozwiazan jest dyskusyjna (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
mariuszn3
post
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

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


uff.. dobrze, że jest obejście poprzez query() (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Normanos rozumiem, że korzystasz z natywnego MySQL'oego cache'a a nie php ? Przynajmniej widziałem tu już post reklamujący cache'owanie w php.. który w efekcie przejmował cache'owania od MySQL i w dodatku był wolniejszy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jeszcze jedno pytanie.. Czy Cake jest wszędzie w miarę elestyczny i można bezproblemowo jakieś swoje moduły wykorzystać?
Go to the top of the page
+Quote Post
mr.r
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 14.08.2006

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


ech counterQuery w ogóle nie jest zaimplementowane do modelu, co by się tam nie dalo nie dziala, nawet błedu nie powoduje (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
nrm
post
Post #6





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


mariuszn3: nie, oczywiscie ze php. najprostsze i juz wytestowane przeze mnie rozwiazanie: serializacja danych do pliku. na dowolna ilosc czasu. w zasadzie identycznie rozwiązanie co Zyxa w OPD (nakładka z cache na PDO).
a elastycnzosc: coz, pewnie zalezy od umiejetnosci i przyzwyczajen. na juz lekko zorientowalem sie w strukturze i na razie sobie radze. cos wiecej powiem jak skoncze wiekszy serwis.
Go to the top of the page
+Quote Post
andrzejb
post
Post #7





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

Ostrzeżenie: (10%)
X----


ja napisze tak jezeli powtazalnosc zapytan jest duza TYPU: select pole pole pole WHERE id=$id, to ja nie widze sensu rezygnowania z modelu ktory ulatwia bardzo bardzo prace z zapytaniami jezeli mamy specyficzny przypadek wtedy przychodzi nam z pomocą query.. oczywiscie jako uzupelnienie brakow ale trudu przeniesienia na model stricto relacyjny czyli sumowanie zbiorow dzielenie złączenia wyliczenia itp.. ktore stanowia jak wiadomo znikomy % wykonanych zapytań(w moich projektach oczywiscie)

Ten post edytował andrzejb 18.09.2006, 12:49:33
Go to the top of the page
+Quote Post

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: 22.08.2025 - 22:28