[ 'product_variant_id', 'project_id', ], 'message' => 'The combination of Product Variant ID and Project ID has already been taken.', ], [ [ 'product_variant_id' ], 'exist', 'skipOnError' => true, 'targetClass' => ProductVariant::className(), 'targetAttribute' => [ 'product_variant_id' => 'product_variant_id' ], ], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'product_to_project_id' => 'Product To Project ID', 'product_variant_id' => 'Product Variant ID', 'project_id' => 'Project ID', 'product_id' => 'Product', ]; } /** * @return \yii\db\ActiveQuery */ public function getProductVariant() { return $this->hasOne(ProductVariant::className(), [ 'product_variant_id' => 'product_variant_id' ]); } /** * @return \yii\db\ActiveQuery */ public function getProject() { return $this->hasOne(Project::className(), [ 'project_id' => 'project_id' ]); } public function getProduct() { return $this->hasOne(Product::className(), [ 'product_id' => 'product_id', ]) ->viaTable('product_variant', [ 'product_variant_id' => 'product_variant_id' ]); } }