[CakePHP2]hasManyの子の取得条件を適宜設定する方法

よくある話だと思いますが、
日時が絡むなどで、クエリーの度に取得条件が変化する場合の対応

find投げる前にモデルオプジェクトのhasmany設定を書き換えればよい

$start_day = '2013-12-04';
$end_day = '2014-01-04';
$this->Reserve->Option->hasMany['Reserve']['conditions'] = array('end_day >' => $start, 'start_day <=' => $end, 'deleted' => null);
$options = $this->Reserve->Option->find('all', array('fields' => array('Option.*', 'OptionGroup.name'), 'order' => array('option_group_id', 'id')));

hasManyはクエリーが分けて投げられるため、ベースのfindに条件を入れてもエラーとなります。
なので、ベースのモデルのhasManyのconditionsに設定しましょうというお話です。

CakePHPの理解を深めるには、
オブジェクトの生成タイミングと動作パラメータの設定タイミングを理解したら良いという事に気付いた昨今でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください