###発生している問題・エラーメッセージ
ormモデルでhas_manyの機能を使用し検索ページを作っています。
or_whereを用いた複数条件の OR検索は実装出来たのですが
複数条件全てを満たす AND検索がうまく実装出来ません。
...わかりづらい質問になってしまい申し訳ありませんが、宜しくお願いいたします。
###該当のソースコード
下記のような構造のテーブルがあります
class Model_Hoge extends \Model_Orm { protected static $_properties = array( "id", "contents" ); protected static $_has_many = array( 'fuga_tables' => array( 'key_from' => 'id', 'model_to' => 'Model_Fuga', 'key_to' => 'hoge_id', 'cascade_save' => false, 'cascade_delete' => false, ) ); } class Model_Fuga extends \Model_Orm { protected static $_properties = array( "fuga_id", "hoge_id", "type" ); protected static $_primary_key = array('fuga_id','hoge_id'); }
###サンプルデータ
Model_Hoge
id | Contents |
---|---|
1 | AAA |
2 | BBB |
3 | CCC |
Model_Fuga
fuga_id | hoge_id | type |
---|---|---|
1 | 1 | search_type_A |
2 | 1 | search_type_B |
3 | 2 | search_type_A |
4 | 3 | search_type_B |
###試したこと
// OR検索 //関連するFugaモデルのtypeがsearch_type_Aまたはsearch_type_BのHogeモデルのデータを取得する // [成功] Model_Hogeの id => 1,2,3に該当するデータが取得できる Model_Hoge::query() ->related("fuga") ->where("type","search_type_A") ->or_where("type","search_type_B") ->get(); // AND検索 //関連するFugaモデルのtypeがsearch_type_Aとsearch_type_Bの両方のデータを持っているHogeモデルのデータを取得する // [失敗] Model_Hogeの id => 1に該当するデータを取得したかったが、取得件数は0件だった Model_Hoge::query() ->related("fuga") ->where("type","search_type_A") ->where("type","search_type_B") ->get();
AND検索の失敗例のコードは検索結果が0件なのは当然なのですが、他にいい方法がわかりませんでした。
###補足情報
PHP 5.6.19
DATABASE psql (9.3.11)
↑MYSQLでも構いません
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/26 04:04