web-dev-qa-db-ja.com

Zend FrameworkでのRAW SQLクエリ

Zend FrameworkでSQL文字列をクエリとして実行する方法はありますか?

私はそのような文字列を持っています:

$sql = "SELECT * FROM testTable WHERE myColumn = 5"

次に、この文字列を直接実行して解析し、「手動」でZend_Db_Table_Selectオブジェクトを作成します。または、可能であれば、この文字列からZend_Db_Table_Selectオブジェクトを作成して、そのオブジェクトを実行します。

どうやってやるの? Zendのドキュメントでこれに対する解決策が見つかりませんでした。

18
Matthias B

最初にZend_DBオブジェクトを作成している場合は、それを使用してクエリを作成できます。マニュアルのこのエントリを見てください: https://framework.zend.com/manual/1.12/en/zend.db.statement.html

$stmt = $db->query(
            'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?',
            array('goofy', 'FIXED')
        );

または

$sql = 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?';
$stmt = new Zend_Db_Statement_Mysqli($db, $sql);
24
JohnP

TableGatewayを使用している場合は、このステートメントを使用して生のSQLクエリを実行できます。

$this->tableGateway->getAdapter()->driver->getConnection()->execute($sql);

$ sqlは生のクエリに関係します。これは、TRUNCATE/INSERT SELECTステートメントのようなネイティブのZF2対応がないクエリに役立ちます。

4
user2897139

ZF1の例を次に示します。

$db =Zend_Db_Table_Abstract::getDefaultAdapter();
$sql =    "select * from user"
$stmt = $db->query($sql);
$users =  $stmt->fetchAll();
2
Faiyaz Alam

同じクエリをZend形式で使用できます。

$select = db->select()->from(array('t' => 'testTable'))
                     ->$where= $this->getAdapter()->quoteInto('myColumn = ?', $s);
$stmt = $select->query();
$result = $stmt->fetchAll();
2
besin