示例#1
0
 public function setTankGunLine($gunString)
 {
     $fullname_list = explode(';', $gunString);
     foreach ($fullname_list as $fullname) {
         $attributes = Gun::parseFullName($fullname);
         if (Gun::find()->where(['gun_caliber' => $attributes[0], 'gun_name' => $attributes[1]])->exists()) {
             //echo 'нашли!';
             $guns[] = Gun::findOne(['gun_caliber' => $attributes[0], 'gun_name' => $attributes[1]]);
         } else {
             //echo 'НЕ нашли - надо создать';
             $gun = new Gun();
             $gun->gun_caliber = $attributes[0];
             $gun->gun_name = $attributes[1];
             $gun->save();
             $guns[] = $gun;
         }
         $this->setTankGuns($guns);
     }
 }
示例#2
0
 public function search($params)
 {
     $query = Tank::find();
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['attributes' => ['tank_name', 'tankArmor' => ['asc' => ['tank_armor_lob' => SORT_ASC, 'tank_armor_side' => SORT_ASC, 'tank_armor_rear' => SORT_ASC], 'desc' => ['tank_armor_lob' => SORT_DESC, 'tank_armor_side' => SORT_DESC, 'tank_armor_rear' => SORT_DESC]], 'tankGunLine' => ['asc' => ['gun.gun_caliber' => SORT_ASC, 'gun.gun_name' => SORT_ASC], 'desc' => ['gun.gun_caliber' => SORT_DESC, 'gun.gun_name' => SORT_DESC]]]]]);
     $this->load($params);
     if (!$this->validate()) {
         return $dataProvider;
     }
     //зависимости
     $query->joinWith('tankGuns');
     //фильтр имени танка
     $query->andFilterWhere(['like', 'tank_name', $this->tank_name . '%', false]);
     //филтр блони
     $armor_array = Tank::parseTankArmor($this->tankArmor);
     $query->andFilterWhere(['like', 'tank_armor_lob', $armor_array[0] . '%', false])->andFilterWhere(['like', 'tank_armor_side', $armor_array[1] . '%', false])->andFilterWhere(['like', 'tank_armor_rear', $armor_array[2] . '%', false]);
     //фильтр орудий
     $gun_array = Gun::ParseFullName($this->tankGunLine);
     $query->andFilterWhere(['like', 'gun.gun_caliber', $gun_array[0] . '%', false])->andFilterWhere(['like', 'gun.gun_name', $gun_array[1] . '%', false]);
     $query->all();
     return $dataProvider;
 }