私のモデルではこれを持っています
function pieChart($conditions = null) {
//Get Data for PieChart
$this->RecordDrug->virtualFields['sum'] ='COUNT(*)';
$records = array();
$records=$this->RecordDrug->find('list',
array(
'conditions' => $conditions,
'fields' => array( 'Drug.drug', 'sum'),
'order' => array('sum' => 'desc'),
'contain' => array( 'Drug', 'Record' ),
'group' => 'Drug.Drug'
));
return $records;
}
これは基本的に、この関数が自分自身によって呼び出された場合、条件が設定されていないことを意味します。したがって、コントローラー内で、必要に応じて条件を定義できます。を除いてまったく同じことをしたい
'limit' => $limit,
設定する必要があると思います
$limit = null
関数の括弧内。& と $limit,$conditions = null を試しましたが、これらのオプションはどちらも機能しませんでした。私はOOPの経験があまりありませんが、これを行う方法があると思いますか?
編集:
コードを更新しましたが、まだ機能していません。関数の括弧内にある最初の変数は機能するものであり、2番目のものはそこにないように振る舞うだけです
モデル:
function pieChart($limit = null, $conditions = null) {
//Get Data for PieChart
$this->RecordDrug->virtualFields['sum'] ='COUNT(*)';
$records = array();
$records=$this->RecordDrug->find('list',
array(
'conditions' => $conditions,
'fields' => array( 'Drug.drug', 'sum','Record.unit'),
'order' => array('sum' => 'desc'),
'limit' => $limit,
'contain' => array( 'Drug', 'Record' ),
'group' => 'Drug.Drug'
));
debug($records);
return $records;
}
コントローラ:
$conditions = array('Record.user_id' => $this->Session->read('Auth.User.id'));
$pieChart = $this->Record->pieChart($conditions);
$this->set('output',$pieChart);
この条件変数の後でも、ユーザー データをロードするだけではありません。「$limit = null」を削除すると、意図したとおりに機能します。