BlameableBehavior::className(), 'createdByAttribute' => 'user_id', 'updatedByAttribute' => false, ], [ 'class' => TimestampBehavior::className(), 'createdAtAttribute' => 'date_add', 'updatedAtAttribute' => false, 'value' => new Expression('NOW()'), ], 'slug' => [ 'class' => 'common\behaviors\Slug', 'in_attribute' => 'name', 'out_attribute' => 'link', 'translit' => true ] ]; } /** * @inheritdoc */ public function rules() { return [ [ [ 'name', 'link' ], 'required', ], [ [ 'project_pid', 'payment_variant', 'contractual', 'budget_currency', ], 'integer', ], [ [ 'description' ], 'string', ], [ [ 'specializationInput', 'paymentInput', ], 'safe', ], [ [ 'name', 'link', 'budget', 'city', 'street', 'house', ], 'string', 'max' => 255, ], [ [ 'view_count' ], 'default', 'value' => 0, ], [ [ 'paymentInput', 'specializationInput', ], 'default', 'value' => [ ], ], [ [ 'deadline' ], 'integer', 'min' => 1, ], [ [ 'deadline' ], 'default', 'value' => 1, ], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'project_id' => Yii::t('app', 'Project ID'), 'user_id' => Yii::t('app', 'User ID'), 'name' => Yii::t('app', 'Название'), 'link' => Yii::t('app', 'URL'), 'project_pid' => Yii::t('app', 'Родительский проект'), 'date_add' => Yii::t('app', 'Дата добавления'), 'date_end' => Yii::t('app', 'Дата окончания'), 'user_add_id' => Yii::t('app', 'User Add ID'), 'view_count' => Yii::t('app', 'Количество просмотров'), 'budget' => Yii::t('app', 'Бюджет'), 'city' => Yii::t('app', 'Город'), 'street' => Yii::t('app', 'Улица'), 'house' => Yii::t('app', 'Дом'), 'payment_variant' => Yii::t('app', 'Варианты оплаты'), 'deadline' => Yii::t('app', 'Срок выполнения'), 'description' => Yii::t('app', 'Описание'), 'contractual' => Yii::t('app', 'Договорной'), 'file' => Yii::t('app', 'Присоединить файл'), 'specializationInput' => Yii::t('app', 'Специализации'), 'paymentInput' => Yii::t('app', 'Способ оплаты'), 'specializationString' => Yii::t('app', 'Специализации'), ]; } /** * @return \yii\db\ActiveQuery */ public function getProjectPayments() { return $this->hasMany(ProjectPayment::className(), [ 'project_id' => 'project_id' ]); } public function getPayments() { return $this->hasMany(Payment::className(), [ 'payment_id' => 'payment_id' ]) ->viaTable('project_payment', [ 'project_id' => 'project_id' ]); } /** * @return \yii\db\ActiveQuery */ public function getUser() { return $this->hasOne(User::className(), [ 'id' => 'user_id' ]); } /** * @return \yii\db\ActiveQuery */ public function getParent() { return $this->hasOne(self::className(), [ 'project_id' => 'project_pid' ]); } public function getBudgetCurrency() { return $this->hasOne(Currency::className(), [ 'currency_id' => 'budget_currency' ]); } /** * @return \yii\db\ActiveQuery */ public function getProjectSpecializations() { return $this->hasMany(ProjectSpecialization::className(), [ 'project_id' => 'project_id' ]); } public function getSpecializations() { return $this->hasMany(Specialization::className(), [ 'specialization_id' => 'specialization_id' ]) ->viaTable('project_specialization', [ 'project_id' => 'project_id' ]); } public function getSpecializationInput() { return $this->getSpecializations() ->asArray() ->indexBy('specialization_id') ->column(); } public function setSpecializationInput($value) { $this->specializationInput = $value; } public function getPaymentInput() { return $this->getPayments() ->asArray() ->column(); } public function setPaymentInput($value) { $this->paymentInput = $value; } public function getSpecializationString() { return implode(', ', $this->getSpecializations() ->select([ 'specialization_name', 'specialization_id', ]) ->asArray() ->indexBy('specialization_id') ->column()); } public function setSpecializationString($value) { $this->specializationString = $value; } }