Example #1
0
 /**
  * 2 варианта: если такого значения еще нет - добавляем его и связываем с фичей,
  * если есть - просто связываем с фичей
  * @param int $feature_id
  * @param string $value_name
  */
 public static function addValue($feature_id, $value_name)
 {
     $feature_value = self::findOne(['feature_value' => $value_name]);
     if (!$feature_value) {
         $feature_value = new self();
         $feature_value->feature_value = $value_name;
         $feature_value->save();
     }
     $relations = new FeaturesValuesRelations();
     $relations->feature_id = $feature_id;
     $relations->feature_value_id = $feature_value->id;
     $relations->save();
 }
Example #2
0
 /**
  * Список всех значений фич, которые задействованы в данной категории маркетов
  * @param type $category_id
  * @param type $feature_ids
  * @return type
  */
 public static function getPossibleMarketsValues($category_id, $feature_ids)
 {
     $feature_ids = array_map('intval', $feature_ids);
     $feature_ids_imploded = implode(',', $feature_ids);
     $sql = 'SELECT fv.id, fv.feature_value ' . ' FROM ' . self::tableName() . ' fv ' . ' JOIN ' . FeaturesValuesRelations::tableName() . ' fvr ' . ' ON fv.id = fvr.feature_value_id ' . ' JOIN ' . MarketsFeatures::tableName() . ' mf ' . ' ON fv.id = mf.feature_value_id ' . ' JOIN ' . MarketsCategories::tableName() . ' mc ' . ' ON mc.markets_id = mf.markets_id ' . ' WHERE fvr.feature_id IN (' . $feature_ids_imploded . ') ' . ' AND mc.categories_id = :category_id';
     return self::findBySql($sql, [':category_id' => $category_id])->asArray()->all();
 }
Example #3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getFeaturesValuesRelations()
 {
     return $this->hasMany(FeaturesValuesRelations::className(), ['feature_value_id' => 'id']);
 }
Example #4
0
 public static function getByValue($value_id)
 {
     $sql = 'SELECT f.id, f.name ' . ' FROM ' . self::tableName() . ' f ' . ' JOIN ' . FeaturesValuesRelations::tableName() . ' fvr ' . ' ON f.id = fvr.feature_id ' . ' WHERE fvr.feature_value_id = :value_id';
     return self::findBySql($sql, [':value_id' => $value_id])->asArray()->all();
 }