$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?
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();