私は次のモデルを持っています:
App::uses('AppModel', 'Model');
class Sync extends AppModel {
public $belongsTo = array(
'Unit' => array(
'className' => 'Sync',
'foreignKey' => 'parent_id'
)
);
public $hasMany = array(
'Consultant' => array(
'className' => 'Sync',
'foreignKey' => 'parent_id'
)
);
}
を実行する$this->Sync->find('all')
と、ほぼ希望どおりの配列が返されます。
Array
(
[0] => Array
(
[Sync] => Array
(
[id] => 22222
[parent_id] => 22222
[statistic_date] => 2012-11-14 00:00:00
)
[Unit] => Array
(
[id] => 22222
[parent_id] => 22222
[statistic_date] => 2012-11-14 00:00:00
)
[Consultant] => Array
(
[0] => Array
(
[id] => 11111
[parent_id] => 22222
[statistic_date] => 2011-12-15 00:00:00
)
[1] => Array
(
[id] => 33333
[parent_id] => 22222
[statistic_date] => 2011-12-14 00:00:00
)
)
)
)
問題は、コンサルタントに条件を付けたいということです。このような:
$this->Sync->Consultant->find('all', array(
'conditions' => array(
'Consultant.statistic_date BETWEEN ? AND ?' => 'array(
'2011-12-01 00:00:00', '2011-12-31 00:00:00'
)'
)
))
ただし、目的の配列が返されません。
Array
(
[0] => Array
(
[Unit] => Array
(
[id] => 22222
[parent_id] => 22222
[statistic_date] => 2012-11-14 00:00:00
)
[Consultant] => Array
(
[id] => 11111
[parent_id] => 22222
[statistic_date] => 2011-11-15 00:00:00
)
)
[1] => Array
(
[Unit] => Array
(
[id] => 22222
[parent_id] => 22222
[statistic_date] => 2012-12-14 00:00:00
)
[Consultant] => Array
(
[id] => 33333
[parent_id] => 22222
[statistic_date] => 2011-12-14 00:00:00
)
)
)
私はこのフォームでそれをしたい:
Array
(
[0] => Array
(
[Unit] => Array
(
[id] => 22222
[parent_id] => 22222
[statistic_date] => 2012-11-14 00:00:00
)
[Consultant] => Array
(
[0] => Array
(
[id] => 11111
[parent_id] => 22222
[statistic_date] => 2011-12-15 00:00:00
)
[1] => Array
(
[id] => 33333
[parent_id] => 22222
[statistic_date] => 2011-12-14 00:00:00
)
)
)
)
どうやってそれを達成しますか?私が考えることができる可能な解決策は、contain または Hash:: クラスを使用することですが、方法がわかりません。
この問題の助けをいただければ幸いです。