【问题标题】:Can't get result set, when i use 2 where statements in DQL无法获得结果集,当我在 DQL 中使用 2 个 where 语句时
【发布时间】:2011-02-10 15:43:54
【问题描述】:

我正在使用 ORM Doctrine 1.2,我收到以下错误消息:

未捕获的异常“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' 设置正确。

请给我一些可以解决的问题。

费。

【问题讨论】:

    标签: doctrine


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 2014-03-28
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多