Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Minimalizacja zapytań
Ziels
post 25.12.2007, 17:02:00
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


Witam

W symfony mam mały problem - dodam że dopiero zaczynam używać tego frameworka.
Otóż mam sobie takie akcje:

  1. <?php
  2. class articlesActions extends sfActions
  3. {
  4.  
  5. public function preExecute()
  6. {
  7. $c = new Criteria();
  8. $this->articles = ArticlePeer::doSelect($c);
  9. }
  10.  
  11. public function executeIndex()
  12. {
  13. }
  14.  
  15. public function executeShow()
  16. {
  17. foreach($this->articles as $article)
  18. {
  19. if($article->getId() == $this->getRequestParameter('id'))
  20. {
  21. $this->article = $article;
  22. break;
  23. }
  24. }
  25. $this->forward404Unless($this->article);
  26. }
  27.  
  28. }
  29. ?>


Chodzi mi tutaj o metodę executeShow() - jest jakaś gotowa metoda modelu która by mi zwracała artykuł z pobranej listy bez tworzenia drugiego zapytania? Jeśli dam
  1. <?php
  2. $this->article = ArticlePeer::retrieveByPK($this->getRequestParameter('id'));
  3. ?>

To automatycznie do bazy pójdzie kolejne zapytanie.

Ten post edytował Ziels 25.12.2007, 17:03:40
Go to the top of the page
+Quote Post
destroyerr
post 25.12.2007, 17:18:55
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Taką funkcjonalność zawiera propel 1.3. Jednak ja zostawiłbym model a zastanowiłbym się czy dla każdej akcji potrzebne Ci jest pobieranie całej tabeli w metodzie preExecute();. Przecież wydajniej jest pobrać dla akcji show, edit etc... tylko jeden rekord. Nawet dla ewentualnej akcji list lepiej jest pobrać tylko kilka artykułów.
Go to the top of the page
+Quote Post
Ziels
post 25.12.2007, 17:41:25
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


Generalnie to jest taki projekt testowy w którym chciałem osiągnąć funkcjonalność jakby mini-cmsa smile.gif Artykuły to nic innego jak pozycje menu, a menu musi być wyświetlane z boku na każdej podstronie, najlepiej z pełną zawartością. Dlatego zastanawiało mnie czy jeśli wszędzie wybieram z bazy wszystkie artykuły to czy nie mogę zawrzeć szukania tego jednego w jednym poleceniu. Ale dzięki za informacje smile.gif Da się jakoś aktualizować tego propela, czy jest integralną częścią Symfony i lepiej go nie ruszać?
Go to the top of the page
+Quote Post
destroyerr
post 25.12.2007, 18:05:33
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Jest plugin do wersji 1.3. Do tego menu to polecam uzyc komponent.
Go to the top of the page
+Quote Post
empathon
post 7.01.2008, 20:11:41
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

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


Bez przesady z tą optymalizacją. Wszystko jest dobrze puki nie tworzysz nieczytelnego kodu a tu właśnie to robisz. Jedno zapytanie nie zbawi świata.
Tak jak napisał destroyerr najlepiej dla menu, komponent i tam pobierz artykuły.


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 22.06.2025 - 18:11