public static function generateFilename() { while (true) { $name = RandomFilename::generate('jpg'); $path = substr($name, 0, 2) . '/' . $name; if (!BattleImage::findOne(['filename' => $path])) { return $path; } } }
public function getBattleImageResult() { return $this->hasOne(BattleImage::className(), ['battle_id' => 'id'])->andWhere(['type_id' => BattleImageType::ID_RESULT]); }
protected function toImage(Battle $battle, $imageTypeId, $attr) { if ($this->isTest) { return null; } if ($this->{$attr} == '' && !$this->{$attr} instanceof UploadedFile) { return null; } $o = new BattleImage(); $o->battle_id = $battle->id; $o->type_id = $imageTypeId; $o->filename = BattleImage::generateFilename(); return $o; }
public function getLatestBattleResultImage() { return $this->hasOne(BattleImage::className(), ['battle_id' => 'id'])->viaTable('battle', ['user_id' => 'id'], function ($query) { $query->innerJoin('battle_image', 'battle.id = battle_image.battle_id AND battle_image.type_id = :type', [':type' => BattleImageType::ID_RESULT]); $query->orderBy('{{battle}}.[[id]] DESC'); $query->limit(1); })->andWhere(['battle_image.type_id' => BattleImageType::ID_RESULT]); }
/** * @return \yii\db\ActiveQuery */ public function getBattleImages() { return $this->hasMany(BattleImage::className(), ['type_id' => 'id']); }