お世話になります。
CakePHP2において、2つのテーブル、orderとdetailがあり order:detail = 1:N (hasMany)となっております。
findでの検索条件で、Containableビヘイビアを使用してdetail側の値を指定して検索をかけたのですが、どうしてもdetailが空のorderまで取得してしまい困っております。
cakeのマニュアルですと、これでアンマッチの方は出力されない感じなのですが、実際はそうでもないのでしょうか。(最終的な出力結果が記載されていなかったので、この結果が正なのかが判断できませんでした)
detail条件にマッチしているorderのみ取得したいと思っております。
(下記結果の1次元目の0番のみ取得したい)
以下詳細です。
●テーブル
[orders]
id | name |
---|---|
1 | 注文1 |
2 | 注文2 |
[details]
id | order_id | product |
---|---|---|
1 | 1 | 商品1 |
2 | 1 | 商品2 |
3 | 1 | 商品3 |
4 | 2 | 商品1 |
5 | 2 | 商品2 |
●ソース(controller内)
$this->Order->Behaviors->load('Containable'); $list = $this->Order(find("all", array( 'contain' => array( 'Detail' => array( 'conditions' => array( 'Detail.order_id =' => 1, ), ), ));
●結果($listダンプ)
Array ( [0] => Array ( [Order] => Array ( [id] => 1 [name] => 注文1 ) [Detail] => Array ( [0] => Array ( [id] => 1 [order_id] => 1 [product] => 商品1 ) [1] => Array ( [id] => 1 [order_id] => 1 [product] => 商品2 ) [2] => Array ( [id] => 1 [order_id] => 1 [product] => 商品3 ) ) ) [1] => Array ( [Order] => Array ( [id] => 2 [name] => 注文2 ) [Detail] => Array ( ) )
見づらい箇所あると思いますが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/18 01:00
2017/01/18 01:04
2017/01/18 01:43 編集
2017/01/18 01:48
2017/01/18 02:23