Php 未返回条件yii中的正确行

Php 未返回条件yii中的正确行,php,yii,Php,Yii,我一直保持着第一张唱片。是的,我知道我写了$model[0],但是为什么它不使用函数来获取给定产品id的第一条记录呢?似乎不管参数中有什么,它都只返回第一条记录 控制器: foreach ($basket as $item){ if($item->product->store_id==$value){ //here... tried hard coding different things in the params.. doesn't work $

我一直保持着第一张唱片。是的,我知道我写了
$model[0]
,但是为什么它不使用函数来获取给定产品id的第一条记录呢?似乎不管参数中有什么,它都只返回第一条记录

控制器:

foreach ($basket as $item){     
    if($item->product->store_id==$value){
    //here... tried hard coding different things in the params.. doesn't work
    $shipping = table::model()->getProductShipRate(322, $from, $to);        
    $ship_fee = $shipping[0]->ships_to_fee;
    //blah blah
    print_r($shipping[0]->add_cost); // always give me the first entry.
    }
   }
型号:

public function getProductShipRate($pid,$from,$to){ //doesn't do anthing dont know why.
            $criteria = new CDbCriteria();
            $criteria->condition='product_id="'.$pid.'"';
            $criteria->condition='ships_from="'.$from.'"';
            $criteria->condition='ships_to="'.$to.'"';      
            $record =$this->findAll($criteria);

            if(!empty($record))
                return $record;
        }
错误如下:

$criteria = new CDbCriteria();
$criteria->condition='product_id="'.$pid.'"';
$criteria->condition='ships_from="'.$from.'"';
$criteria->condition='ships_to="'.$to.'"';      
您用下一个字符串替换了条件。使用以下命令:

$criteria = new CDbCriteria();
$criteria->addCondition('product_id="'.$pid.'"');
$criteria->addCondition('ships_from="'.$from.'"');
$criteria->addCondition('ships_to="'.$to.'"');
但最好看看这个:

public function getProductShipRate($pid,$from,$to){
    return $this->findAll(
                'product_id = :pid AND ships_from = :from AND ships_to = :to'
                ['pid' => $pid, 'from' => $from, 'to' => $to]
    );
}

+1用于使用参数。。或者可以使用$criteria->params=array();