2014-01-07 3 views
0

내가 원하는 것은 특정 제품 ID로 모든 옵션의 모든 가격을 반환하는 쿼리를 수행 한 다음 컨트롤러에서 배열로 가져온 다음 뷰에 에코 가장 작은 가격, 내가 잘못 가고 있는지 잘 모르겠다. 나는 비슷한 질문을 게시했다. 그러나 나는 이것이 더 잘 설명한다고 생각한다.Opencart 최소 옵션 가격 표시

모델

public function getMin() { 

$queryMin = $this->db->query("SELECT * FROM `oc_product_option_value` WHERE product_id = '" . (int)$product_id . "'"); 
if (isset($queryMin->row['price'])) { 
     return $queryMin->row['price']; 
    } else { 
     return 0; 
    } 

} 

컨트롤러

$minimum = $this->model_catalog_product->getMin(); 
       $this->data['minimum'] = array(); 
       foreach ($minimum as $minimums) { 
        $this->data['minimum'][] = array(
        'price' => $minimum['price'] 
        ); 
        } 

보기

<?php if(isset($this->data['minimum'])){ ?> 
    <?php $min = min($this->data['minimum']); ?> 
    <?php echo $min ?> 
    <?php }else{ ?> 
    <?php echo $price; ?> 
    <?php } ?> 

답변

1

문제는 귀하의 모델 방법 (주로 쿼리)에 있습니다.

getMin() 방법은 다음과 같아야합니다

$query = $this->db->query(" 
    SELECT MIN(price) min_option_price 
    FROM " . DB_PREFIX . "product_option_value pov 
    LEFT JOIN " . DB_PREFIX . "option o ON o.option_id = pov.option_id 
    LEFT JOIN " . DB_PREFIX . "product_option po ON po.option_id = o.option_id 
    WHERE po.product_id = " . (int)$product_id); 

return (int) $query->row['min_option_price']; 

그런 다음 컨트롤러에서 당신은 이런 식으로 그것을 얻을 :

$minimum = $this->model_catalog_product->getMin($this->request->get['product_id']); 
$this->data['minimum'] = $this->currency->format($this->tax->calculate($minimum, $product_info['tax_class_id'], $this->config->get('config_tax'))); 

지금 당신은 직접 템플릿에서 사용할 수 있습니다 :

<?php if($minimum) { ?> 
Minimum price is: <?php echo $minimum; ?> 
<?php } else { ?> 
Price is: <?php echo $price; ?> 
<?php } ?> 

모델의 이름을에서 바꾸는 것이 좋습니다. 210)에 연결된다. getProductOptionMinPrice().

+0

현재 가격 대신 1을 반환하는 것은 $ minimum에 데이터가 있음을 반환하는 것입니다. – user2689642

+0

아니요, 제품에 첨부 된 모든 옵션의 최소 가격을 반환해야합니다. '$ minimum' 변수에 어떤 값이 있는지 확인하십시오. 서식을 지정할 때 변경 될 수도 있습니다. – shadyyx