0

私のモデルではこれを持っています

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」を削除すると、意図したとおりに機能します。

4

1 に答える 1

2

こちらです:

function pieChartTwo($limit = null, $conditions = null) {
  ...
}
于 2013-06-17T02:08:44.087 に答える