使用Zend Framework的RAW SQL Query

2022-08-30 20:58:05

有没有办法在Zend Framework中将SQL字符串作为查询执行?

我有一个这样的字符串:

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

现在我想直接执行这个字符串,并解析它并从中“手动”创建一个对象。或者,如果可以,请从此字符串创建一个对象,以执行该对象。Zend_Db_Table_SelectZend_Db_Table_Select

我该怎么做?我在Zend文档中没有找到解决方案。


答案 1

如果要在开始时创建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);

答案 2

如果您使用的是 tableGateway,则可以使用以下语句运行原始 SQL 查询,

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

其中$sql与原始查询有关。这对于没有本机 ZF2 对应项(如 TRUNCATE/INSERT SELECT 语句)的查询非常有用。


推荐