2011-02-10 57 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

相关问题