2015-02-09 60 views
1

我正在編寫一個在Zend Framework 1.12中有子查詢的查詢。我快完成了,但遇到了一個奇怪的行爲。 這是我的查詢Zend Framework中的SQL子查詢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查詢來擺脫這些引號?

+1

嘗試使用新的Zend_Db_Expr('('。$ subselect。')') – satchcoder 2015-02-09 15:51:42

+0

謝謝,這個伎倆。我現在不知道爲什麼,但沒關係。我使用它來增加可讀性: - > where('project_id IN(?)',new Zend_Db_Expr($ subquery)) – hottehead 2015-02-09 16:04:36

回答

1

你不應該使用 - > assemble()。如果你將刪除assemble(),你也不需要Zend_DB_Expr。