Commit 65f5712c43c2b6f9f4971a92ebdc5e343b77745e

Authored by Administrator
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,7 +571,40 @@
571 } 571 }
572 return $groups; 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 public function getVideos() 608 public function getVideos()
576 { 609 {
577 return $this->hasMany(ProductVideo::className(), [ 'product_id' => 'id' ]); 610 return $this->hasMany(ProductVideo::className(), [ 'product_id' => 'id' ]);
models/ProductVariant.php
@@ -398,6 +398,38 @@ @@ -398,6 +398,38 @@
398 } 398 }
399 return $groups; 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 * Set stocks to override existing in product_stock table 435 * Set stocks to override existing in product_stock table