如何为特定项目创建动态最小和最大验证?
购买时我使用的是型号购买,而对于我使用型号产品的产品。我需要在Buy模型中实现这个规则。
示例 - 我正在查看ID 12 的项目,此项目有100个单位的库存(这需要最大),最小订单数量为10(这需要最小)。
编辑:
产品(项目)表:
id
name
stock
minOffer
购买表格
id
offer
product_id
user_id
购买要约不能超过产品表中的当前库存。
答案 0 :(得分:2)
在您的购买模式中,您可以编写自定义规则,如下所示。
public function rules()
{
return [
['product_id', 'checkmaxandminvalues'],//assuming product_id is a field in Buy
// other rules
];
}
public function checkmaxandminvalues($attribute, $params)
{
$your_product=Products::find()->where(['_id'=>$this->product_id])->one();
//Here you do your validation logic
if($your_product->_id === 12 && $your_product->stock > 100)
{
$this->addError('product_id', 'Product stock should not be greater than 100');
}
else if($your_product->_id===12 && $your_product->stock < 10)
{
$this->addError('product_id', 'Product stock should not be less than 10');
}
}