Как создать модель для поиска мульти таблицы в yii2

Я хочу искать в мульти-таблице в yii2. Как сделать это действие?

<?php

namespace app\models;

use Yii;
use yii\db\Query;
use app\models\Article;
use app\models\Certificates;
use app\models\News;
use app\models\Pages;
use app\models\Projects;
use app\models\NewsSearch;

Я хочу поиск в нескольких таблицах. эта таблица не имеет никакого отношения к Вместе

я хочу написать запрос в yii2, как это:

select *   from news , article , projects where (any column for this tables ) like %search%

-1

Решение

Вы можете сделать это, используя отношение, добавив 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)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]