Skip to content

[PROPOSAL] query as immutable activerecord object #10459

@mikk150

Description

@mikk150

this could be successfully used for Statistical queries without setters getters method, and is actually faster and could potentially used for other generator queries as well

class WhateverCount extends \yii\db\ImmutableActiveRecord
{
    public function query()
    {
        return (new \yii\db\Query())->select(['related_id', 'counted' => 'count(*)'])->from('tablename')->groupBy('related_id'); //OR SOMETHING
    }
}

class WhateverModel extends \yii\db\ActiveRecord
{
    public function tablename()
    {
        return 'sometable';
    }

    public function getWhateverCount()
    {
        $this->hasOne(WhateverCount::class,['id'=>'related_id']);
    }
}
WhateverModel::find()->with('whateverCount')->all();

would do queries like this then

SELECT * FROM sometable;
SELECT related_id, count(*) counted FROM tablename WHERE related_id IN (...) GROUP BY related_id

it would give opportunity to do things like this

WhateverModel::find()->with([
    'whateverCount'=>function($query) {
        $query->andWhere(['>','created_at','2013-02-14 3:22:17']
    }
])->all();

And gridview would also like this :)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions