您可以使用关系将 activeRelation 添加到您的主模型中,然后在适当的搜索功能中使用关系,
例如(只是一个简短的建议):
/* ActiveRelation */
public function getMyExtModelRelation()
{
return $this->hasOne(MyExtModel::className(), ['id' => 'ext_id']);
}
并在主模型中搜索
/* search function */
.....
....
// filter by MyExtModel attribute
$query->joinWith(['myExModelRelation' => function ($q) {
$q->where('tbl_my_ext_model.my_attribute LIKE "%' . $this->my_attribute . '%"');
}]);
在这里你可以找到一个很好的教程,用于常见的相关和计算的搜索过滤器和排序http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2- 0/
我不明白你想做什么,你的查询结果可能很大而且用处不大,但无论如何,如果你想要一个通用查询,你可以使用
use yii\db\Query;
.....
$connection = \Yii::$app->db;
$any_column = "your_any_column";
$any_search = " concat('%', '". $your_search ."', '%'); "
$sql ="select * from news, article , projects where " . $any_column . $any_search ;
$yourModels = $connection->createCommand($sql);->queryAll();
可能是您必须为您在 select 中使用的列分配别名,以便从模型中检索此列或使用完整名称 (tablename.columnname)