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
Wybrane książki:
- Adam Omelak: Zend Framework 3. Poradnik programisty, Wydawnictwo Helion, 2017
- Matt Zandstra: PHP. Obiekty, wzorce, narzędzia. Wydanie V, Wydawnictwo Helion, 2017
- Eric A. Meyer, Estelle Weyl: CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny. Wydanie IV, Wydawnictwo Helion, 2019.
- Keith J. Grant: CSS od podszewki, Wydawnictwo Helion, 2019.
Wybrane strony: