Zend Framework 1.12中的SQL子查询

时间:2015-02-09 15:48:45

标签: php mysql zend-framework

我正在编写一个在Zend Framework 1.12中有子查询的查询。我差点儿完成但遭遇了一种奇怪的行为。 这些是我的疑问

    $subquery = $db->select()
                    ->from('project')
                    ->reset( Zend_Db_Select::COLUMNS )
                    ->columns('project_id')
                    ->where('user_id = ? ', $iUserId);

    $select = $db->select()
                    ->from('user2project')
                    ->reset( Zend_Db_Select::COLUMNS )
                    ->columns('user_id')                        
                    ->where( 'project_id IN (?)', $subquery->assemble() );

这是生成的SQL语句:

$select->assemble() produces

string(143) "SELECT `user2project`.`user_id` FROM `user2project` WHERE (project_id IN ('SELECT `project`.`project_id` FROM `project` WHERE (user_id = 6 )'))"

子查询的引用类似于“SUBQUERY”。 DB似乎将此作为数组元素并且不解析select。我在Zend查询中需要更改哪些内容才能删除这些引号?

1 个答案:

答案 0 :(得分:1)

你不应该使用 - > assemble()。如果你将删除assemble(),你也不需要Zend_DB_Expr。