2012-12-05 58 views
0

我試圖讓下面的謂語使用ZF2和MSSQL工作2008年Zend框架2:謂詞與MSSQL中列名的空間

$select = new Select(); 
$select -> from("MyTable"); 

$predicateIn = new Predicate\In('Bad Name', array(
"A", 
"B", 
"C" 
)); 

$select -> where(array($predicateIn)); 
$resultSet = $this -> selectWith($select); 

這是錯誤我得到:

[Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near 'Bad' 

打印生成的語句會顯示以下內容,並且找不到解決方法。

SELECT "MyTable".* FROM "MyTable" WHERE "Bad" "Name" IN ('A', 'B', 'C') 

任何額外的報價被轉義,並且使用相同的錯誤[錯誤名稱]的結果。 我很難過。

回答

0

最後我做以下,其中的工作:

$select = new Select(); 
$select -> from("MyTable")  
$platform = $this->adapter->getPlatform(); 
$filterList = array("A","B","C") 

$predicateIn = $platform->quoteIdentifierChain(array('MyTable','Bad Name')); 
$predicateIn .= " in ("; 
$predicateIn .= $platform->quoteValueList($filterList); 
$predicateIn .= ")"; 

$select -> where(array($predicateIn)); 
$resultSet = $this -> selectWith($select); 

我仍想獲得謂語\在()工作,雖然。