Vous pouvez le faire en utilisant la relation en ajoutant l'activeRelation le modèle principal, puis utiliser la relation dans une recherche appropriée fonction
par exemple (une brève suggestion):
/* ActiveRelation */
public function getMyExtModelRelation()
{
return $this->hasOne(MyExtModel::className(), ['id' => 'ext_id']);
}
et principal modelSearch
/* search function */
.....
....
// filter by MyExtModel attribute
$query->joinWith(['myExModelRelation' => function ($q) {
$q->where('tbl_my_ext_model.my_attribute LIKE "%' . $this->my_attribute . '%"');
}]);
Ici vous pouvez trouver un bon tutoriel pour filtre de recherche connexes et calculés en commun et trier http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/
Je ne comprends pas ce que vous trynd à faire et le résultat de votre requête pourrait être énorme et peu utile, mais de toute façon si vous voulez une requête genaric vous pouvez utiliser
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();
pourrait être vous devez attribuer l'alias à la colonne que vous utilisez dans retrive de sélection pour cette colonne à partir de modèles ou d'utiliser le nom complet (nomtable.nomcolonne)
je veux rechercher dans plusieurs tables. cette table n'a aucune relation avec Together J'ai mis à jour cet article. – Saltern
J'ai mis à jour la réponse – scaisEdge
SQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1064 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MariaDB pour la bonne syntaxe à utiliser près de 'concat ('% ', yes,'% ')' à la ligne 1 Le SQL en cours d'exécution était: select * from news, article where news. ftitle concat ('%', yes, '%'); !!!!! – Saltern