Php ZF2复杂SQL在何处关闭

Php ZF2复杂SQL在何处关闭,php,zend-framework2,zend-db-select,Php,Zend Framework2,Zend Db Select,如何在Zend\Db\Sql中创建复杂的关闭位置? 带有“COLLATE utf\u general\u ci”或“REGEXP”的。 还有,将查询作为我想要的字符串提供给它的方法是什么 谢谢大家! 一个完整复杂where子句的示例会有所帮助,但您可以使用表达式或文字 启动适配器 $adapter = new Zend\Db\Adapter\Adapter(array( 'driver' => 'Mysqli', 'database' => 'zend_db_exam

如何在Zend\Db\Sql中创建复杂的关闭位置? 带有“COLLATE utf\u general\u ci”或“REGEXP”的。 还有,将查询作为我想要的字符串提供给它的方法是什么


谢谢大家!

一个完整复杂where子句的示例会有所帮助,但您可以使用表达式或文字

启动适配器

$adapter = new Zend\Db\Adapter\Adapter(array(
    'driver' => 'Mysqli',
    'database' => 'zend_db_example',
    'username' => 'developer',
    'password' => 'developer-password'
 ));

$sql = new Zend\Db\Sql\Sql($adapter);

$qi = function($name) use ($adapter) { return $adapter->platform->quoteIdentifier( $name ); };

$qv = function($name) use ($adapter) { return $adapter->platform->quoteValue( $name ); };
文字

$regexSpecification = '(\\"key\\":\\"value\\")';
$sql->select()
        ->from('dbTable')
        ->where->literal( $qi('column1') . " REGEXP " . $qv($regexSpecification) )
        ->or->equalTo('column2', 'value');

//SELECT `dbTable`.* FROM `dbTable` WHERE `column1` REGEXP '(\"key\":\"value\")' OR `column2` = 'value'
表达

    $expression = new Zend\Db\Sql\Predicate\Expression( "SHA2(".$qi('column2').", 512)" );
    $sql->select()
        ->from('dbTable')
        ->columns( array( 'hashed' => $expression ) )
        ->where( array( $qi('column1') . " COLLATE latin1_general_cs = " . $qv('value'))); 

//SELECT SHA2(`column2`, 512) AS `hashed` FROM `dbTable` WHERE `column1` COLLATE latin1_general_cs = 'value'
适配器执行的查询

$adapter->query( 'ALTER TABLE ADD INDEX('. $qi('foo') .') ON ( '. $qi('foo_column') .' )', Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE );
参考资料:


谢谢@fyrye!我自己已经算出了文字,但这肯定会帮助周围的其他人。