teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

containで無駄にReserveを取得していたのを修正

2016/01/15 07:16

投稿

退会済みユーザー
answer CHANGED
@@ -1,14 +1,17 @@
1
1
  「hasMany先のテーブルに条件を指定してもメインテーブルの取得件数は変わらない、
2
2
  なので結合後にhasMany先のテーブルの条件で絞りたい」ということでいいですかね?
3
3
 
4
- こんなのでどうでしょう?
4
+ JOIN後、WHERE絞込を行います。
5
+ ReserveのデータはJOINで取得しているのでContainは空を指定して下さい。
6
+ 代わりにfieldsで欲しいカラムを指定します。
5
7
  ```PHP
6
8
  // コントローラー
7
9
  $condition = array( 'limit' => 20
8
- , 'order' => array('Customer.id DESC')
10
+ , 'order' => array('Customer.id DESC')
9
- , 'contain' => array('Reserve')
11
+ , 'contain' => array()
12
+ , 'fields' => array('Customer.id', 'Reserve.id')
10
- , 'conditions' => array('Reserve.start >= ?' => date('Y-m-d H:i:s')) // ここがWHERE文になる
13
+ , 'conditions' => array('Reserve.start >= ?' => date('Y-m-d H:i:s'))
11
- , 'joins' => array(array( 'table' => 'reserves'
14
+ , 'joins' => array(array( 'table' => 'reserves'
12
15
  , 'alias' => 'Reserve'
13
16
  , 'type' => 'LEFT'
14
17
  , 'conditions' => array('Customer.id = Reserve.customer_id'))));

1

推敲

2016/01/15 07:16

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,5 @@
1
1
  「hasMany先のテーブルに条件を指定してもメインテーブルの取得件数は変わらない、
2
- なので結合後にReserveの条件で絞りたい」ということでいいですかね?
2
+ なので結合後にhasMany先テーブルの条件で絞りたい」ということでいいですかね?
3
3
 
4
4
  こんなのでどうでしょう?
5
5
  ```PHP