ZF – Podgląd zapytań do bazy danych / Profiler

W tym artykule chcę przedstawić sposób na podgląd zapytania / zapytań wykonywanych na stronie stworzonej za pomocą Zend FrameWork.

Potrzebujemy do tego:

  • Stronę opartą na Zendzie, która wykorzystuje bazę danych :)
  • dodatek do FireFox’a – FireBug (najnowsza wersja)
  • dodatek do FireFox’a – FirePHP (najnowsza wersja) – bardzo ważne, aby po włączeniu FireBug’a kliknąć po lewej na niebieskiego robaczka i zaznaczyć FirePHP Enabled

Więc do roboty :)

 

Pierwsze co musimy zrobić to zainstalować powyższą wtyczkę / dodatek.

Następnie w pliku konfiguracyjnym dla aplikacji w parametrach opisujących bazę musimy dopisać 2 linijki (zaznaczenie):

  1. resources.db.adapter = "pdo_mysql"
  2. resources.db.params.host = "host"
  3. resources.db.params.username = "nazwa_usera"
  4. resources.db.params.password = "haselko"
  5. resources.db.params.dbname = "nazwa_bazy"
  6. resources.db.params.charset = "utf8"
  7. resources.db.isDefaultTableAdapter = true
  8. resources.db.params.profiler.enabled = true
  9. resources.db.params.profiler.class = Zend_Db_Profiler_Firebug

I to już praktycznie wszystko :) Teraz wchodzimy na naszą stronę i włączamy FireBug’a. Na górnym pasku wybieramy „Konsola” i klikając obok na strzałkę zaznaczamy „Włączony”.

2011-08-13_232005.png

Następnie przechodzimy na stronę, w której chcemy podejrzeć zapytanie lub jeśli na niej jesteśmy to wystarczy ją odświeżyć.

W konsoli powinna się ukazać pozycja / pozycje o nazwie „Zend_Db_Profiler_Firebug” i czasie wykonania zapytania. Jeśli klikniemy na wybraną pozycję zobaczymy podgląd zapytań jakie zostały wysłane wraz z wysłanymi parametrami (w moim przypadku to był tylko select):

2011-08-13_232224.png

Jak widać mamy zapytanie, które możemy wykorzystać bezpośrednio w phpMyAdmin lub innym programie, aby sprawdzić, czy zwrócone wyniki są przez nas pożądane.

Kod, który wygenerował powyższe zapytanie to:

  1. $query = $this->select()
  2. ->from(array('a' => 'administrator'))
  3. ->join(array('u' => 'user'),'a.use_id = u.use_pk_id',array())
  4. ->where('u.use_role = ?','administrator');

Jak widać jest to bardzo wygodne narzędzie do podglądu zapytań. Dzięki temu mamy szansę sprawdzić co jest nie tak, chociaż nam się wydaje że jest OK :)