1

ZF2のSQLオブジェクトを使用して非常に簡単なクエリを作成しました...

$sql = new Sql($this->adapter);
$select = $sql->select()
->from('school')
->where(array("id = ?" => $id));

echo $ select-> getSqlString();

ただし、これが返すクエリには、テーブル名の前後に「引用符」が含まれています...

SELECT "school".* FROM "school" WHERE id = '4'

これにより、明らかにクエリが正しくなくなります。なぜそれがこれを行うのか、そしてそれを止める方法を誰かが知っていますか?

4

1 に答える 1

2

私見では、getSqlStringメソッドはナンセンスです。内部を見ると、SQL文字列をレンダリングする関数にドライバー情報が渡されていないことがわかります。その結果、レンダラーはデフォルトのクエリテンプレートを想定し、Mysqlテンプレートを使用する代わりに値を引用するだけです。

これを使用してみてください:

$select = $sql->select()
    ->from('school')
    ->where(array("id = ?" => $id));
$sql = new Sql($this->adapter);
$selectString = $sql->getSqlStringForSqlObject($select);

Zend \ Db \ Sql \ Selectオブジェクトのみを使用して、「limit」句を適切にレンダリングしようとして数時間後にこれが見つかった場合。

于 2013-07-05T11:56:09.480 に答える