我不断获得第一张唱片。是的我知道我写了$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;
}
答案 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]
);
}