yii2, оптимизация запросов в БД, связанные модели
Я создал данный запрос для получения данных с помощью "связывания моделей"
мой контроллер
\Yii::$app->view->registerMetaTag([
'name' => 'description',
'content' => "Freedom Home. " . self::META
]);
$model = new Search();
$dataProvider = $model->historis();
\Yii::$app->getView()->registerJsFile(Yii::$app->request->baseUrl . '/js/history.js', ['position' => \yii\web\View::POS_END, 'depends' => [\yii\web\JqueryAsset::className()]]);
$this->getView()->registerCssFile("@web/css/index.css", ['depends' => ['frontend\assets\AppAsset']]);
$this->getView()->registerCssFile("@web/css/post.css", ['depends' => ['frontend\assets\AppAsset']]);
return $this->render('index', array(
'dataProvider' => $dataProvider
));
public function historis()
{
$query = History::find()
->select(['history.id', 'history.title', 'history.user_id', 'history.description', 'history.datetime'])
->joinWith('user')
->joinWith('historyHashtags');
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 10
],
'sort' => [
'defaultOrder' => [
'id' => SORT_DESC
]
],
]);
return $dataProvider;
}
метод getUser()
/**
* Gets query for [[User]].
*
* @return \yii\db\ActiveQuery
*/
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'user_id'])->select(['id', 'username']);
}
historyHashtags
public function getHistoryHashtags()
{
return $this->hasMany(HistoryHashtags::className(), ['history_id' => 'id'])->select(['hashtag_id', 'history_id'])->joinWith('hashtag');
}
метод getHashtag
public function getHashtag()
{
return $this->hasOne(Hashtags::className(), ['id' => 'hashtag_id'])->select(['id', 'name']);
}
В итоге я получаю целых 14 запросов в БД
Вопрос как можно оптимизировать данный код?
- Убрать запросы типу SHOW FULL COLUMNS FROM и SELECT * FROM
information_schema - Оптимизировать мой код чтобы он сделал меньше запросов(Если это возможно)


