【问题标题】:SQL Subquery in Zend Framework 1.12Zend Framework 1.12 中的 SQL 子查询
【发布时间】:2015-02-09 15:48:44
【问题描述】:

我正在编写一个在 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' 。数据库似乎将此作为数组元素,并且不解析选择。我必须在 Zend 查询中进行哪些更改才能删除这些引号?

【问题讨论】:

  • 尝试使用 new Zend_Db_Expr('('.$subselect.')')
  • 谢谢,这成功了。我现在不知道为什么,但没关系。我这样使用它以使其更具可读性: ->where( 'project_id IN (?)',new Zend_Db_Expr($subquery) )

标签: php mysql zend-framework


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-06
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多