• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در مورد جمع زدن مجموع مقادیری که به صورت Group By انتخاب شده اند
#1
سلام.
من یه تابع توی مدلم استفاده کردم برای گزارش گیری . که تابعش رو از روی تابع Search خود Yii که Gii تولید میکنه استفاده کردم.

کد پی‌اچ‌پی:
public function report()
{
    
// @todo Please modify the following code to remove attributes that should not be searched.
 
    
$criteria=new CDbCriteria;
      
$criteria->compare('paper_id',$this->paper_id);
    
$criteria->compare('seller_id',$this->seller_id);
    if(
$this->paper_id!=""){
    
$criteria->group 'seller_id';
    }
    if(
$this->seller_id!=""){
    
$criteria->group 'paper_id';
    }
     
    return new 
CActiveDataProvider($this, array(
        
'criteria'=>$criteria,
    ));


توی این تابع میاد بر اساس فرم صفحه قبلش که دو تا DropDownlist داره میاد رکورد ها رو Group By میکنه .
مثلا رکوردهای A.b.c با هم گروه میشن.
و رکورد های d,e,f هم با هم.
الان میخوام توی دوتا رکوردی که در نهایت نوشته میشه -فرض مثال بالا- مجموع مقادیر اونها رو چاپ کنم.

صفحه View هم اینه:

کد پی‌اچ‌پی:
$this->widget('zii.widgets.grid.CGridView', array(
    
'id'=>'enter-grid',
    
'dataProvider'=>$model->report(),
    
'columns'=>array(
         array(
            
'header'=>'ردیف',
            
'value'=>'$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)',
        ),
        array(          
            
'name'=>'paper_id',
            
'value'=>'$data->paper->paper_title',
        ),
        array(          
            
'name'=>'seller_id',
            
'value'=>'$data->seller->seller_name',
        ),
        array(
            
'header'=>'تعداد',
            
'value'=>'$data->enter_number'// اینجا میخوام مقدار کل نشون داده بشه.الان مقدار یکی از رکوردها رو میزنه.
         
        
),
        array(
            
'name'=>'جزئیات',
            
'value' => "CHtml::link('جزئیات',array('enter/report','enter_id'=>\$data->enter_id))",
            
'type'=>'raw',
        ),
         
    ),
)); 
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#2
شما باید تو CDbCriteria از تابع sum استفاده کنید. در CGridView عملا نمیتوانید کار خاصی انجام دهید.

برای این کار مثلا اگر ستون views دارید بنویسید:

$criteria->select = 'sum(views)

بهترین راه حل برای خروجی گرفتن اینه که شما یکبار کویری رو خام در phpMyAdmin یا کنسول MySQL اجرا کنید و بعد که مطمئن شدید قضیه اوکی هست اینجا تبدیلش کنید به فرم Yii
جامعه مجازی پیمانکاران و کارفرمایان
www.beestak.com
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان