2016-11-18 7 views
1

私はCodeigniter 3.0.3を使用しています。 私はクエリビルダーでクエリを構築したいが、いくつかの関数でクエリのビルドを分割したい。たとえば :Codeigniterいくつかの関数でディスパッチされたクエリビルダ

class MyCart{ 

public function __construct() { 
    $this->db->select('A.id, A.title, A.price'); 
    $this->db->from('articles A'); 
} 

public function check_type($aTypeOfArticle){ 
    $this->db->where("A.type=".$aTypeOfArticle); 
} 

public function check_price($aMaxPrice){ 
    $this->db->where("A.price<=".$aMaxPrice); 
} 

public function get_result(){ 
    $query = $this->db->get(); 
    return $query->result(); 
} 

} 

しかし、私はこれをしようとすると、this->db->get()はfalseを返します。 これを行うことは可能ですか?

答えて

1

この可能性が高い作品より良いあなたのために、

public function query() 
{ 
    $this->db->select('A.id, A.title, A.price'); 
    $this->db->from('articles A'); 

    if(check_type($aTypeOfArticle)) 
    { 
    $this->db->where("A.type=".$aTypeOfArticle); 
    } 

    if(check_price($aMaxPrice)) 
    { 
    $this->db->where("A.price<=".$aMaxPrice); 
    } 
} 

public function check_type($aTypeOfArticle){ 
    // Do processing 
    return true or false; 
} 

public function check_price($aMaxPrice){ 
    // Do Processing 
    return true or false; 
} 

は、単一の機能でクエリを作成し、処理の結果のために他の関数を呼び出します。

+0

したがって、異なる関数でクエリを分割することはできません。私がチェックし、それらをすべて同じ機能の中に置くための多くの基準を持っているので、かなり醜いでしょう。 – ZeeCast

+0

私が知っているわけではありませんが、それはないと言っているわけではありません、私はまったく知らない。私がここに示したやり方は、私たちがここでやる方法だと私は言います。 – Blinkydamo

0

Method Chainingをご覧ください。 from()呼び出しの戻り値をキャッシュすることができます(たとえば、オブジェクトのプロパティなど)。その値を使用して、他のメソッドをチェーンすることができます。

関連する問題