[Codeigniter-users] ふと気になったCIのアクティブレコード

Back to archive index

Kenji kenji****@club*****
2009年 3月 31日 (火) 15:40:30 JST


Kenji です。


On Tue, 31 Mar 2009 13:58:14 +0900
kunitsuji <tsuji****@m-s*****> wrote:

>  kunitsujiです。
> 
> やはりそのように書くしかないんですかね。

そのほうが可読性が高いと思います。(笑)
それか SQL を生書きでしょうか。


> 中身見てないのですが、
> db->where()
> db->where()
> をやると、上から順番に文字列結合するだけなんですかね。
> 
> $this->db->where('((a=1 AND b=1)');
> $this->db->or_where('(a=2 AND b=2))');
> この時点で矛盾したとエラーが出ないということは、その時点では解釈してない
> ということですね。
> get()が来たときにwhereの中身を配列から?取り出して結合するということかな。

ええ、そんな感じだったと思います。


// Kenji

> >Kenji です。
> >
> >
> >On Mon, 30 Mar 2009 15:09:13 +0900
> >kunitsuji <tsuji****@m-s*****> wrote:
> >
> >> kunitsujiです。
> >> 
> >> CIのアクティブレコードを使っていてちょっと気になったこと。
> >> バグとかじゃありません(笑)
> >> 
> >> SELECT * FROM hoge 
> >> WHERE ((a=1 AND b=1) OR (a=2 AND b=2)) AND c=1;
> >> 
> >> こういうSQLを目的としていた場合、
> >> どう書くんだろう?と思いながら
> >> 
> >> $this->db->where('((a=1 AND b=1)');
> >> $this->db->or_where('(a=2 AND b=2))');
> >> $this->db->where('c', 1);
> >> としたら正常に上記のSQLが吐き出されていました。
> >> 
> >> なんか、、、、きもちわるいなぁ。と思ったのでMLに投稿してみました。
> >> 
> >> 他にいい記述方法あるんでしょうか?
> >
> >$this->db->where('((a=1 AND b=1) OR (a=2 AND b=2)) AND c=1');
> >でどうでしょう?
> >
> >
> >// Kenji
> >
> >_______________________________________________
> >Codeigniter-users mailing list
> >Codei****@lists*****
> >http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
> 
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users




Codeigniter-users メーリングリストの案内
Back to archive index