Commit 72ce46f7c1bc96b81400ec9142bfad6686783d1b
1 parent
5fb852db
options in basket
Showing
1 changed file
with
43 additions
and
0 deletions
 
Show diff stats
models/Basket.php
| @@ -4,6 +4,7 @@ | @@ -4,6 +4,7 @@ | ||
| 4 | 4 | ||
| 5 | use artbox\catalog\models\Variant; | 5 | use artbox\catalog\models\Variant; | 
| 6 | use yii\base\Component; | 6 | use yii\base\Component; | 
| 7 | + use yii\db\ActiveQuery; | ||
| 7 | use yii\helpers\Json; | 8 | use yii\helpers\Json; | 
| 8 | use yii\web\Cookie; | 9 | use yii\web\Cookie; | 
| 9 | use yii\web\NotFoundHttpException; | 10 | use yii\web\NotFoundHttpException; | 
| @@ -263,6 +264,48 @@ | @@ -263,6 +264,48 @@ | ||
| 263 | ->indexBy('id') | 264 | ->indexBy('id') | 
| 264 | ->all(); | 265 | ->all(); | 
| 265 | } | 266 | } | 
| 267 | + | ||
| 268 | + public function findModelsWithOptions(array $variant_ids) | ||
| 269 | + { | ||
| 270 | + if (empty($variant_ids)) { | ||
| 271 | + return []; | ||
| 272 | + } | ||
| 273 | + return Variant::find() | ||
| 274 | + ->where([ 'variant.id' => $variant_ids ]) | ||
| 275 | + ->joinWith( | ||
| 276 | + [ | ||
| 277 | + 'variantOptionExcls' => function (ActiveQuery $query) { | ||
| 278 | + $query->with( | ||
| 279 | + [ | ||
| 280 | + 'group', | ||
| 281 | + 'lang', | ||
| 282 | + ] | ||
| 283 | + ); | ||
| 284 | + }, | ||
| 285 | + ] | ||
| 286 | + ) | ||
| 287 | + ->joinWith('lang') | ||
| 288 | + ->joinWith( | ||
| 289 | + [ | ||
| 290 | + 'product' => function ($query) { | ||
| 291 | + /** | ||
| 292 | + * @var \yii\db\ActiveQuery $query | ||
| 293 | + */ | ||
| 294 | + $query->with( | ||
| 295 | + [ | ||
| 296 | + 'lang', | ||
| 297 | + 'image', | ||
| 298 | + ] | ||
| 299 | + ); | ||
| 300 | + }, | ||
| 301 | + ] | ||
| 302 | + ) | ||
| 303 | + ->with( | ||
| 304 | + 'image' | ||
| 305 | + ) | ||
| 306 | + ->indexBy('id') | ||
| 307 | + ->all(); | ||
| 308 | + } | ||
| 266 | 309 | ||
| 267 | /** | 310 | /** | 
| 268 | * Clear basket | 311 | * Clear basket | 
 
