2012-01-27 11 views
2

CodeigniterにDatamapper ORMを使用して、特定のクエリに問題があります。私のデータモデルは、私が多くのカテゴリ、ユーザー、タグを持つブログ投稿を持つように設定されています。特定のカテゴリ、ユーザー、タグに関連するブログ投稿を取得したいのですが、のステータスが「公開済み」または「スケジュール済み」です。CodeigniterのDatamapper ORMでWHEREパラメータをネストする方法はありますか?

は、換言すれば、私が達成したいことはある:DataMapperのORMで category = General AND (status = published OR status = scheduled)

私は(私は名前を「一般」と分類している投稿をしたいと仮定した場合)、次の構文を試してみました: (status = published AND category = General) OR status = scheduled

$posts->where_related('category', 'name', 'General') 
     ->where('status', 'published') 
     ->or_where('status', 'scheduled') 
     ->get(); 

しかし、これはポストを得ることになります。ステートメントの順番を変えることは役に立ちません。 OR条件を括弧で入れ子にするためのDatamapper構文があるかどうかは分かりません。いくつかのより複雑続い

SELECT * FROM posts WHERE (status = "published" OR status = "scheduled) AND ...

が...文を登録しようが、私はDataMapperのを使用しています全体の理由を作ることです。

は私のような、私は生のSQLでクエリを書くことができます実現します関係を簡単に扱うことができるので、OR条件をネストするために、このすべてのことを未処理のSQLで書く必要はないと思います!サブクエリを使用することもできますが、やはり複雑なことではないと思います。

紛失しているものがありますか?私はDatamapperの構文を使用してそれを達成することができるようにこのクエリを整理するいくつかの方法? AND/ORステートメントの操作順序を何らかの方法で組み込む必要があると指定できるようです...

答えて

関連する問題