При чтении документации Zend Framework 2: http://framework.zend.com/manual/2.0/en/modules/zend.db.sql.html приведены два примера того, как можно запрашивать данные из базы данных. Для справки, они:Zend Framework 2 Zend Db Sql Sql - prepareStatementForSqlObject vs getSqlStringForSqlObject
Для подготовки (с помощью Выбрать объект):
use Zend\Db\Sql\Sql;
$sql = new Sql($adapter);
$select = $sql->select();
$select->from('foo');
$select->where(array('id' => 2));
$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();
Чтобы выполнить (с помощью Выбрать объект)
use Zend\Db\Sql\Sql;
$sql = new Sql($adapter);
$select = $sql->select();
$select->from('foo');
$select->where(array('id' => 2));
$selectString = $sql->getSqlStringForSqlObject($select);
$results = $adapter->query($selectString, $adapter::QUERY_MODE_EXECUTE);
Мне не удалось найти какие-либо дальнейшие инструкции в документация о том, какие преимущества/недостатки могут иметь один метод по сравнению с другими в определенных ситуациях. Я вижу, что если нам нужно отлаживать наш SQL-запрос, getSqlStringForSqlObject поможет нам это сделать. Но кроме того, кто-нибудь знает ситуацию, когда один метод может быть лучше другого?
Спасибо.
Так было бы что второй пример «getSqlStringForSqlObject()» на самом деле не готовит оператор, а просто преобразует его в строку для прямого выполнения с БД. В таком случае, да, я могу легко увидеть разницу между ними. Спасибо за понимание. – Derrick