0

検索の代わりに自分のモデルを使用しようとしています (カスタム検索機能):

public function combineCampInputByDate($startDate,$endDate) {

$criteria=new CDbCriteria;
$criteria->select   = 'food.*,SUM(customer) AS customer, SUM(money) AS money';
$criteria->join     = 'JOIN foodType food ON foodtype = food.foodtype ';     
$criteria->condition = "date BETWEEN '$startDate' AND '$endDate'";
$criteria->group        = 'foodtype ';
return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
    ));
}

結果は、モデル + 他のテーブルの属性になります。

私はそれらをビューに表示しようとしていますが、....のような属性はありません(モデルには他のテーブルからの属性がないため、これは明らかです)

では、モデルの結果で以下のウィジェットを使用するにはどうすればよいですか??

イライラしますが、専門家を頼りにしています:)ダニー


編集:1.コントローラー-

public function actionIndex()
{
if (isset($_POST['Filter']) && !empty($_POST['Filter']['date']) ) {
$GetDates = new GetDates();
$this->dates = $GetDates->getDatesFromPostWidget($_POST);
$model = new Campaigns;
}
else 
$model=NULL;
$this->render('index',array(
'model' => $model, 'dates' => $this->dates,
)); 
}

モデル -

public function combineCampInputByDate($startDate,$endDate) {

$criteria=new CDbCriteria;
$criteria->select = 'food.*,SUM(customer) AS customer, SUM(money) AS money';
$criteria->join = 'JOIN foodType food ON foodtype = food.foodtype '; 
$criteria->condition = "date BETWEEN '$startDate' AND '$endDate'";
$criteria->group = 'foodtype ';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}

意見

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'bo-campaigns-grid',
'dataProvider'=>$model->combineCampInputByDate($dates['startDate'],$dates['endDate']),
'filter'=>$model,  
),
));
}
4

1 に答える 1

2

モデル クラスに と の 2 つの属性を作成しpublic $customerますpublic $money

カスタム アトリビュートはいくつでも持つことができますが、ネーミングに一貫性を持たせてください。(最初にモデル属性fieldname AS somethingがないとSQL を使用できません)something

編集: また、このように、表示する列をCGridViewに指示する必要があります。

$this->widget('zii.widgets.grid.CGridView', array(
     'id'=>'bo-campaigns-grid',
     'dataProvider'=>$model->combineCampInputByDate($dates['startDate'],$dates['endDate']),
     'filter'=>$model,
     'columns'=>array(
        'customer',
        'money',
       //etc. for more detailed customization, check the links above
     ),    
   ),
));
}
于 2012-06-07T18:12:48.377 に答える