Оптимизация запросов yii2
проект https://gitlab.com/des1roer/yii2pet
пусть view views/pers/index.php
контроллер \app\controllers\PersController::actionAdmin
получили 2 запроса
если же добавить with
то запрос остается один
with можно использовать через несколько связей. вот так выглядит оптимизированный запрос
пусть view views/pers/index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ 'name', 'lvl', 'money', [ 'attribute' => 'race_id', 'format' => 'raw', 'label' => 'раса', 'filter' => $races, 'value' => 'race.name' ], [ 'label' => 'Изображение', 'format' => 'html', 'value' => function ($data) { return Html::img($data->race->img, ['width' => '100']); }, ], [ 'format' => 'raw', 'label' => 'Армия', 'value' => function ($data) { /** @see \app\models\Pers::getUnitNames */ return $data->unitNames; }, ], ['class' => 'yii\grid\ActionColumn'], ], ]); ?> |
контроллер \app\controllers\PersController::actionAdmin
1 2 3 4 5 6 7 8 9 10 11 | public function actionAdmin() { $dataProvider = new ActiveDataProvider([ 'query' => Pers::find(), ]); return $this->render('index', [ 'dataProvider' => $dataProvider, 'races' => \yii\helpers\ArrayHelper::map(Pers::getRaces(), 'id', 'name'), ]); } |
получили 2 запроса
если же добавить with
1 2 3 | $dataProvider = new ActiveDataProvider([ 'query' => Pers::find()->with('race'), ]); |
то запрос остается один
with можно использовать через несколько связей. вот так выглядит оптимизированный запрос
1 2 3 4 5 6 7 8 | $dataProvider = new ActiveDataProvider([ 'query' => Pers::find()->with([ 'race', 'units', 'persUnits.position', 'persUnits.unit', ]), ]); |
According to Stanford Medical, It is in fact the one and ONLY reason women in this country live 10 years longer and weigh on average 42 lbs less than us.
ОтветитьУдалить(And realistically, it has totally NOTHING to do with genetics or some secret-exercise and EVERYTHING to related to "how" they eat.)
BTW, What I said is "HOW", not "what"...
TAP on this link to see if this quick test can help you unlock your real weight loss potential