3

長い話を短くするために:それは可能ですか?可能であれば-このようなクエリを作成するにはどうすればよいですか?

SELECT * FROM a
    WHERE row = 1 AND 
    (other_row LIKE '%..%' OR another_row LIKE '%..%')

基本的に、私はこの問題の解決策を思い付く/見つけることができません。activerecordsクエリに角かっこを追加する方法がわからないようです。それも可能ですか?

私の現在のコード:

$data = $this->where('row', 1)
    ->like('another_row', '...')        
    ->or_where('row', 1)
    ->like('other_row', $search)                
    ->get('a')
    ->result();

結果:

SELECT * FROM (`a`) WHERE `row` = 1 OR `row` = 1 AND `another_row` LIKE '%...%' AND other_row` LIKE '%...%'
4

6 に答える 6

5

これを試すことができます。

   $query = $this->db->select('*')
            ->from('a')
            ->where('row',1)
            ->where("(other_row LIKE '%%' OR another_row LIKE '%%' )")
            ->get();


    foreach ($query->result() as $row) {
        //do sth.
    }

(アクティブなレコード クラスから) カスタム クエリ文字列を記述できます。

 Custom string:
 You can write your own clauses manually:

 $where = "name='Joe' AND status='boss' OR status='active'";

 $this->db->where($where);
于 2012-05-08T05:40:11.810 に答える
0

これを試してみませんか:

    $this->db->where("row = 1 AND 
        (other_row LIKE '%..%' OR another_row LIKE '%..%')");
$this->db->get('a');

これは、CI でカスタム WHERE を記述する方法です。それがあなたが探しているものでない場合は、遠慮なく説明してください

于 2012-05-08T05:44:16.553 に答える
0

私も問題を抱えてor_whereいるので、カスタムクエリを次のようにするだけです

$this->db->query("SELECT * FROM `a` WHERE `row`=1 AND (CONDITION1 OR CONDITION2)")
于 2012-05-08T05:26:07.323 に答える
0
$sql= "SELECT * FROM `a`
WHERE row = '1' AND 
(other_row LIKE '%" . $value . "%' OR another_row LIKE '%" . $value . "%')";
 $this->db->query($sql);
于 2012-05-08T05:26:53.493 に答える