Commit 65f5712c43c2b6f9f4971a92ebdc5e343b77745e
1 parent
b1cc502f
select characteristic
Showing
2 changed files
with
66 additions
and
1 deletions
Show diff stats
models/Product.php
... | ... | @@ -571,7 +571,40 @@ |
571 | 571 | } |
572 | 572 | return $groups; |
573 | 573 | } |
574 | - | |
574 | + | |
575 | + | |
576 | + /** | |
577 | + * Get characteristic from TaxGroups for current Product filled with $customOptions that satisfy current Product | |
578 | + * | |
579 | + * @return TaxGroup[] | |
580 | + */ | |
581 | + public function getCharacteristic(): array | |
582 | + { | |
583 | + $groups = $options = []; | |
584 | + foreach ($this->getOptions() | |
585 | + ->with('lang') | |
586 | + ->all() as $option) { | |
587 | + /** | |
588 | + * @var TaxOption $option | |
589 | + */ | |
590 | + $options[ $option[ 'tax_group_id' ] ][] = $option; | |
591 | + } | |
592 | + foreach (TaxGroup::find() | |
593 | + ->where(['is_menu'=>true]) | |
594 | + ->andWhere([ 'id' => array_keys($options) ]) | |
595 | + ->with('lang') | |
596 | + ->all() as $group) { | |
597 | + /** | |
598 | + * @var TaxGroup $group | |
599 | + */ | |
600 | + if (!empty($options[ $group->id ])) { | |
601 | + $group->customOptions = $options[ $group->id ]; | |
602 | + $groups[] = $group; | |
603 | + } | |
604 | + } | |
605 | + return $groups; | |
606 | + } | |
607 | + | |
575 | 608 | public function getVideos() |
576 | 609 | { |
577 | 610 | return $this->hasMany(ProductVideo::className(), [ 'product_id' => 'id' ]); | ... | ... |
models/ProductVariant.php
... | ... | @@ -398,6 +398,38 @@ |
398 | 398 | } |
399 | 399 | return $groups; |
400 | 400 | } |
401 | + | |
402 | + /** | |
403 | + * Get characteristic from TaxGroups for current ProductVariant filled with $customOptions that satisfy current Product | |
404 | + * | |
405 | + * @return TaxGroup[] | |
406 | + */ | |
407 | + public function getCharacteristic(): array | |
408 | + { | |
409 | + $groups = $options = []; | |
410 | + foreach ($this->getOptions() | |
411 | + ->with('lang') | |
412 | + ->all() as $option) { | |
413 | + /** | |
414 | + * @var TaxOption $option | |
415 | + */ | |
416 | + $options[ $option[ 'tax_group_id' ] ][] = $option; | |
417 | + } | |
418 | + foreach (TaxGroup::find() | |
419 | + ->where(['is_menu'=>true]) | |
420 | + ->andWhere([ 'id' => array_keys($options) ]) | |
421 | + ->with('lang') | |
422 | + ->all() as $group) { | |
423 | + /** | |
424 | + * @var TaxGroup $group | |
425 | + */ | |
426 | + if (!empty($options[ $group->id ])) { | |
427 | + $group->customOptions = $options[ $group->id ]; | |
428 | + $groups[] = $group; | |
429 | + } | |
430 | + } | |
431 | + return $groups; | |
432 | + } | |
401 | 433 | |
402 | 434 | /** |
403 | 435 | * Set stocks to override existing in product_stock table | ... | ... |