可以使用關係添加activeRelation在你的主模型做出來,然後用關係在適當的搜索功能
例如(只是簡單的建議):
/* ActiveRelation */
public function getMyExtModelRelation()
{
return $this->hasOne(MyExtModel::className(), ['id' => 'ext_id']);
}
,並在主modelSearch
/* 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/
我不明白你在trynd做什麼和您的查詢的結果可能是巨大的,沒有多大用處,但無論如何,如果你想 一個genaric查詢,您可以使用
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();
可能是您必須指定別名列,你在選擇從模型使用retrive此列或使用完整的名稱(tablename.columnname)
我想要在多表中搜索。 那個表與我沒有任何關係 我更新了這個帖子。 – Saltern
我已更新答案 – scaisEdge
SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法中有錯誤;請檢查與您的MariaDB服務器版本相對應的手冊,以獲取在第1行'concat('%',yes,'%')'附近使用的正確語法。 正在執行的SQL是:select * from新聞,article新聞。 fTitle concat('%',是,'%'); !!!!! – Saltern