Cakephp hasManyで結合されている方で、データを検索


http://d.hatena.ne.jp/ni-man/20071114
例えば上記URLの形だと、関連モデル名に対するconditionsですよね。
$this->[モデル名]->hasMany['関連モデル名']['conditions'] = '関連モデル名.del_flag = 0';
$data = $this->[モデル名]->findAll());


今私がやりたいのは
$data = $this->[モデル名]->findAll(『 関連モデルを利用した検索条件』));
なんですが、

どうしたらいいでしょうか?やはりサブクエリしかないでしょうか?

ちなみに自分は1.3利用しているので
find('All',$conditions)
ですね。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/11/30 16:41:32
  • 終了:2011/12/07 16:45:03

回答(1件)

id:kodairabase No.1

kodairabase回答回数661ベストアンサー獲得回数802011/11/30 17:36:35

サブクエリを使うしかありません。

id:goodbabies

いや、サブクエリじゃなくても出来るようです。SQLではLEFT JOINするなどして。SQLだと分かるんですが、動的にconditionsを呼び出しているので、CakeのhasManyをつかって結果を出したいんです。

2011/12/01 06:40:34
  • id:tdoi
    User hasMany Item だとして、

    $this->User->hasMany['Item']['conditions'] = 'Item.del_flag = 0';
    $data = $this->User->findAll();

    と書く部分を

    $data = $this->User->findAll(array('Item.del_flag' => 0));

    と書けないのですか?という質問でしょうか?
    取得したいデータは同じですよね?

    この場合だと、発想を変えて、

    Item belongsTo User なので、

    $data = $this->Item->findAll(array('del_flag' => 0));

    ってのもありかもですね。
  • id:tdoi
    あとは、これ
    http://web.archive.org/web/20100421214753/http://cake.zista.jp/max/blog/view/0000000084
  • id:goodbabies
    tdoiさん、ありがとうございます。
    >Item belongsTo User なので、

    > $data = $this->Item->findAll(array('del_flag' => 0));

    まあ、そうなんですけどね。でも$data = $this->[モデル名]->findAll(『 関連モデルを利用した検索条件』));でやりたいんです。

    で、とりあえず下記の方法でなんとかいけそうです。
    http://ikebukuroworker.blogspot.com/2011/07/cakephp.html

    今回は自力でどうにかできました

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません