Fadly Dzil
Fadly Dzil

Reputation: 2206

Yii2 - Count and sum not include of result of ActiveQuery

Basically I have a legacy query in mysql that I will be implement into ActiveRecord,

Legacy Way, as expected

SELECT 
  a.container_seal, 
  a.size ,
  count(a.size) as bundles,
  sum(a.piece) as pieces
FROM pipe a
WHERE a.outgoing_pipe_id IS NULL
GROUP by a.container_seal, a.size
ORDER by a.container DESC

AR Way

 $modelPipe = Pipe::find()

        ->select([
            "container_seal",
            "size",
            "count(size) as bundles",
            "sum(piece) as pieces"
        ])

        ->where(['outgoing_pipe_id' => NULL])
        ->groupBy(['container_seal', 'size'])
        ->orderBy(['container' => SORT_DESC])
        ->all();

But why, when I debug it,

  <pre>
     <?php
        print_r($modelPipe);
     ?>
  </pre>

The count and sum is not into.

Array
(
[0] => app\models\hanwa\Pipe Object
    (
        [_attributes:yii\db\BaseActiveRecord:private] => Array
            (
                [container_seal] => TEMU6099067/ EMCCSQ6566
                [size] => 15 x 35 x 0.85 x 6000
            )

        [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
            (
                [container_seal] => TEMU6099067/ EMCCSQ6566
                [size] => 15 x 35 x 0.85 x 6000
            )

        [_related:yii\db\BaseActiveRecord:private] => Array
            (
            )

        [_errors:yii\base\Model:private] => 
        [_validators:yii\base\Model:private] => 
        [_scenario:yii\base\Model:private] => default
        [_events:yii\base\Component:private] => Array
            (
            )

        [_behaviors:yii\base\Component:private] => Array
            (
            )

    )

[1] => app\models\hanwa\Pipe Object
    (
        [_attributes:yii\db\BaseActiveRecord:private] => Array
            (
                [container_seal] => TEMU6099067/ EMCCSQ6566
                [size] => 35 x 35 x 0.75 x 6000
            )

Is it Yii2 have another way to use sum and count in case 'select' ?

Upvotes: 1

Views: 359

Answers (1)

ScaisEdge
ScaisEdge

Reputation: 133370

You shoudl add the pubblic var for bundles and pieces in your pipe model
(for recive the result of query )

class Pipe extends \yii\db\ActiveRecord
{
   public $bundles;
   public $pieces;
 ......

Upvotes: 2

Related Questions