6

以下の条件のクエリがあります(select、fromなどを除く)

$this->db->where('show_year', $yyyy);
$this->db->or_where('idn', $idn);
$this->db->or_like('post_slug', $idn);

形成する

SELECT * FROM (`nyb_articles`) 
WHERE `show_year` = '2009' 
OR `idn` = 'the' 
AND `post_slug` LIKE '%the%'

しかし、私はそれをもっと似たものにしたいと思っています

SELECT * FROM (`nyb_articles`) 
WHERE `show_year` = '2009' 
AND (`idn` = 'the' OR `post_slug` LIKE '%the%')

私の問題は、CI のアクティブ レコードがこの概念をサポートしているかどうかわからないことです。サポートしている場合、ドキュメントのどこにもその概念が見つからないため、どのように対処すればよいでしょうか。likeor_likewhere、をいくら変えても、or_where似たようなものを釘付けにすることさえできません。それで、誰かが何かアイデアを得ましたか?可能であれば、生のクエリを避けたいと思いますが、準備してそのようにする必要がある場合は、そうしないことを好みます。

4

1 に答える 1

2

これを試しましたか?

SELECT * FROM (`nyb_articles`) 
WHERE `show_year` = '2009' AND `idn` = 'the' 
OR `show_year`='2009' AND `post_slug` LIKE '%the%'

以下は上記の式を生成すると思います:

$this->db->select(...)->from(...)->
where("show_year","2009")->where("idn","the")->
or_where("show_year","2009")->like("post_slug","%the%")
于 2012-11-18T13:41:14.090 に答える