2011-02-10 87 views
0

im使用ORM學說1.2,其中使用2,和我得到這個錯誤消息:無法獲得的結果集,當我在DQL語句

未捕獲的異常「Doctrine_Connection_Mysql_Exception」與消息「SQLSTATE [HY093]:無效參數數量:混合命名和位置參數的

而且其中DQL寫入方法:

public function SearchComboBothDates($searchOptionType,$searchValue,$dateFrom,$dateTill) 
{ 
    $result = $this->createQuery() 
        ->from("Orders o") 
        ->innerJoin("o.Contractants c") 
        ->innerJoin("c.Persons p") 
        ->innerJoin("p.Addresses a") 
        ->innerJoin("o.Resellers r") 
        ->innerJoin("r.Companies cp") 
        ->innerJoin("o.Cars ca") 
        ->innerJoin("ca.CarTypeScopes cts") 
        ->innerJoin("cts.CarTypes ct") 
        ->innerJoin("ct.CarBrands cb") 
        ->innerJoin("o.Users u") 
        ->innerJoin("o.OrderTypes ot")      
        ->where("o.".$searchOptionType." LIKE :searchvalue", array(':searchvalue' => "%".$searchValue."%")) 
        ->andWhere("o.order_date BETWEEN ? AND ? ", array($dateFrom, $dateTill)) 
        ->execute();  
    return $result; 
} 

我敢肯定, '$ searchOptionType,$ searchValue,$ dateFrom,$ dateTill' 是正確的設置。

請給我一些工作,所以可以解決這個問題。

Fer。

回答

1

試試這個;應該避免混合兩種參數類型:

public function SearchComboBothDates($searchOptionType,$searchValue,$dateFrom,$dateTill) 
{ 
    $result = $this->createQuery() 
        ->from("Orders o") 
        ->innerJoin("o.Contractants c") 
        ->innerJoin("c.Persons p") 
        ->innerJoin("p.Addresses a") 
        ->innerJoin("o.Resellers r") 
        ->innerJoin("r.Companies cp") 
        ->innerJoin("o.Cars ca") 
        ->innerJoin("ca.CarTypeScopes cts") 
        ->innerJoin("cts.CarTypes ct") 
        ->innerJoin("ct.CarBrands cb") 
        ->innerJoin("o.Users u") 
        ->innerJoin("o.OrderTypes ot")      
        ->where("o.".$searchOptionType." LIKE ?", "%".$searchValue."%") 
        ->andWhere("o.order_date BETWEEN ? AND ? ", array($dateFrom, $dateTill)) 
        ->execute();  
    return $result; 
} 
+0

Thanx爲快速回答,似乎工作正常。 – Ferry 2011-02-10 15:57:58