$query1 = Class1::find()->where($where);$query2 = Class1::find()->alias('a')->join('left join', Class2::tableName() . 'as b', 'b.id = a.objId')->selec ...
$query1 = Class1::find()->where($where);
$query2 = Class1::find()->alias('a')->join('left join', Class2::tableName() . 'as b', 'b.id = a.objId')->select('a.*')->where($where2);
$queryAll = $query1->union($query2, true);
$query = (new Query())->from(['c' => $queryAll])->select('c.*,d.type,d.title')->join('left join', Class3::tableName() . 'as d', 'd.id = c.objId')->distinct(true)->orderBy(['c.time'=>SORT_DESC]);
$sql = $query->createCommand()->getRawSql();
$result = $query->offset(($page - 1) * 10)->limit(10)->all();
$totalCount = $query->count();
$pagination = new Pagination(['totalCount'=>$totalCount, 'pageSize'=>10]);
$result = $query->offset($pagination->offset)->limit($pagination->limit)->all();