Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Minimalizacja zapytań
Forum PHP.pl > Forum > PHP > Frameworki
Ziels
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.
destroyerr
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.
Ziels
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ć?
destroyerr
Jest plugin do wersji 1.3. Do tego menu to polecam uzyc komponent.
empathon
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.