没有在标准yii中返回正确的行

时间:2014-07-14 17:40:35

标签: 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
    $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;
        }

1 个答案:

答案 0 :(得分:2)

错误在这里:

$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]
    );
}