Search code examples
yii2detailview

how to add number of rows in detailView dynamically in yii2


$dataProviderDetails = new ActiveDataProvider([

                 'query'=> $details
                            ->select(['pk_int_particular_id','vchr_particular_name','int_amount'])
                            ->from('tbl_payroll_details')
                            ->join( 'INNER JOIN', 'tbl_salary_particular', 'tbl_salary_particular.pk_int_particular_id = tbl_payroll_details.fk_salary_particular_id')
                            ->where(['fk_int_payroll_id'=> $id])
                            ->All(),
                            ]);


        $payroll = $dataProviderDetails->query;    
        return $this->render('view', [
               //'model' => $model, 
               'payroll' => $payroll  
        ]);

this join contain the result set is

Array ( [0] => Array ( [pk_int_particular_id] => 1 [vchr_particular_name] => basicSalary [int_amount] => 10000 ) [1] => Array ( [pk_int_particular_id] => 2 [vchr_particular_name] => HRA [int_amount] => 200 ) [2] => Array ( [pk_int_particular_id] => 3 [vchr_particular_name] => PA [int_amount] => 500 ) [3] => Array ( [pk_int_particular_id] => 4 [vchr_particular_name] => professionaltax [int_amount] => 1000 ) )

I printed result in detailView like $payroll[0][vchr_particular_name]

but I would like to know how can I add number of rows in detailView dynamically using array index. Is it possible?


Solution

  • If you need only the total count of the rows select you could use count() instead of all in your query

    ->select(['pk_int_particular_id', 'vchr_particular_name', 'int_amount'])
      ->from('tbl_payroll_details')
      ->join( 'INNER JOIN',  'tbl_salary_particular',  'tbl_salary_particular.pk_int_particular_id = tbl_payroll_details.fk_salary_particular_id')
      ->where(['fk_int_payroll_id'=> $id])
      ->count()
    

    but remember that in an activeDataProvider this should be already calculated by the object itself and store in the 'totalCount' property or you can get it using getTotalCount() method of activeDataProvider

     $dataProviderDetails->totalCount;
     $dataProviderDetails->getTotalCount();