2011-06-01 9 views
1

「Where」句をクエリに追加したものを取得する方法はありますか? foreach文を使用して、現在のクエリのwhere句に追加する列を追加しますが、句が空(追加された列もforeach内の0回の反復)でもないため、クエリはデータベースは何の制限もないため作成しました。 もちろん、foreachが少なくとも1回の反復を行っていることを知るためにブール変数を使用できますが、私が作成しているクエリに関連する情報を取得できるかどうかを知りたいと思います。 みかん私が使用しているコード:CodeIgniterのwhere句を取得します。Activerecord

foreach($columns as $column => $value){ 
    if($column!=''){ 
     $this->db->where($column,$value); 
    } 
} 
$this->db->get('mytable'); 

いくつかの説明を:

$列は、私は、クエリに追加していないemptry文字列である場合。

$ columns varはオブジェクト(stdClass)です。

クエリに「where」ステートメントがない場合、私は$ this-> db-> get()で情報を取得したくありません。私が探しているものは、何かのようなものです

if(! empty($this->db->where_clauses())) 
    $this->db->get('mytable'); 

このようなものがありますか?

ありがとうございました。

答えて

2
直接

ない:ハックのそのビットが、あなたはこれを行うことができます:

if(! empty($this->db->ar_where)) 

ことを試してみて、それが動作するかどうかを確認。

+0

ありがとうございます。私はまだ試していない。 – ecruz

-1
foreach($columns as $column => $value){ 
    if($column!=''){ 
     $this->db->where($column,$value); 
    } 
} 

if (count($columns) > 0) 
$this->db->get('mytable'); 
+0

この回答は間違っています。その質問をもう一度見てください。列を数えると、すべてのインデックスが空の文字列に等しい場合は何も実行されません。ここで参照してください:http://ideone.com/Sfs8I – treeface

+0

待って、彼は言った: "現在のクエリのwhere句を追加したいが、句が空である可能性がある(列が追加されていない、foreachの0反復)」。反復回数がゼロの場合は、カウントが0であることを意味します。 –