Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Przy projektowaniu zapytań SQL, korzystamy z klasy Zend\Db\Sql\Select. Jednak, jeśli zapytanie jest złożone musimy się upewnić, czy zostało prawidłowo utworzone. Dlatego należy wydrukować zapytanie w przeglądarce dla pewności, czy nie wystąpiły drobne błędy. Korzystały z metody getSqlString() lub buildSqlString() (Listing 1). 

 

Metodę getSqlString(), znajdziemy w klasie Zend\Db\Sql\AbstractSql.

Metodę buildSqlString(), znajdziemy w klasie Zend\Db\Sql\Sql.

 

Listing 1. Wydruk polecenia SQL w Zend Framework 3 

...
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Expression;
/**
* Zend Framework 3 kurs
*/
class LanguageTable {

   /**
   * @var \Zend\Db\TableGateway\TableGateway
   */
   protected $tableGateway;

   public function __construct(TableGateway $tableGateway) {
      $this->tableGateway = $tableGateway;
   }

   /**
   * Największa wartość z kolumny order zwiększona o jeden
   * Query: SELECT MAX(`order`) as `order` FROM `language`;
   * @return number
   */
   public function orderPlusOne() {
      /**
      * Polecenie SQL Zend Framework 3
      * Budowanie zapytań SQL za pomocą obiektu klasy Select
      */   

      $select = new Select();
      $select->from($this->tableGateway->getTable());
      $select->columns(array('order' => new Expression('MAX(`order`)')));

      // Niewłaściwy format zapytania SQL
      var_dump($select->getSqlString());

      // Właściwy format zapytania SQL
      var_dump($this->tableGateway->getSql()->buildSqlString($select));

      $rowset = $this->tableGateway->selectWith($select);

      /**

      * @var \PnAdmin\Model\Language $languageRow
      */
      $languageRow = $rowset->current();

      if(empty($languageRow->getOrder())) {
         return 1;
      }

      $result = $languageRow->getOrder() + 1;
      return $result;
   }
...

 

Metoda buildSqlString() jest lepszym rozwiązaniem, gdyż umożliwia bez żadnych poprawek wykonanie zapytania na bazie danych. Metoda getSqlString() korzysta z cudzysłowu, który wygeneruje błąd jeśli będziemy chcieli wykonać zapytanie na bazie danych. Zapytanie wygenerowane za pomocą metody getSqlString() musimy poprawić ręcznie (rys. 1.).

 

Rys. 1. Wydruk przygotowanego polecenia SQL w Zend Framework 3

Rys. 1. Wydruk przygotowanego polecenia SQL w Zend Framework 3

 

Wybrane książki:

  1. Adam Omelak: Zend Framework 3. Poradnik programisty, Wydawnictwo Helion, 2017
  2. Matt Zandstra: PHP. Obiekty, wzorce, narzędzia. Wydanie V, Wydawnictwo Helion, 2017
  3. Eric A. Meyer, Estelle Weyl: CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny. Wydanie IV, Wydawnictwo Helion, 2019.
  4. Keith J. Grant: CSS od podszewki, Wydawnictwo Helion, 2019.

Wybrane strony:

  1. Domeny, Serwery, Wizytówki w dobrych cenach!
  2. Zend Framework Documentation

 

Książki Helion