/** * Include vote aggregate model/values. * * @param $entity * @return \yii\base\Component * @throws \yii\base\InvalidConfigException */ public function withVoteAggregate($entity) { $entityEncoded = $this->getModule()->encodeEntity($entity); $voteAggregateTable = VoteAggregate::tableName(); $model = new $this->owner->modelClass(); $this->initSelect($model); $this->owner->leftJoin("{$voteAggregateTable} {$entity}Aggregate", ["{$entity}Aggregate.target_id" => new Expression("`{$model->tableSchema->name}`.`{$model->primaryKey()[0]}`"), "{$entity}Aggregate.entity" => $entityEncoded])->addSelect([new Expression("`{$entity}Aggregate`.`positive` as `{$entity}Positive`"), new Expression("`{$entity}Aggregate`.`negative` as `{$entity}Negative`"), new Expression("`{$entity}Aggregate`.`rating` as `{$entity}Rating`")]); return $this->owner; }