Php Yii2-动态最小值和最大值验证规则

Php Yii2-动态最小值和最大值验证规则,php,yii2,Php,Yii2,如何为特定项目创建动态最小值和最大值验证 对于购买,我使用型号购买,对于产品,我使用型号产品。我需要在购买模式中实现这些规则 示例-我正在查找id为12的商品,该商品的库存为100件(这需要最大),最小订单为10件(这需要最小) 编辑: 产品(项目)表: id name stock minOffer id offer product_id user_id 购买表格: id name stock minOffer id offer product_id user_id 购买报价不能大于产品

如何为特定项目创建动态最小值和最大值验证

对于购买,我使用型号购买,对于产品,我使用型号产品。我需要在购买模式中实现这些规则

示例-我正在查找id为12的商品,该商品的库存为100件(这需要最大),最小订单为10件(这需要最小)

编辑:

产品(项目)表:

id
name
stock
minOffer
id
offer
product_id
user_id
购买表格:

id
name
stock
minOffer
id
offer
product_id
user_id

购买报价不能大于产品表中的当前库存。

在购买模型中,您可以编写如下所示的自定义规则

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');
   }
}
公共功能规则()
{
返回[
['product\u id','checkmaxandminvalues'],//假设product\u id是Buy中的一个字段
//其他规则
];
}
公共函数checkmaxandminvalues($attribute,$params)
{
$your_product=Products::find()->其中([''u id'=>$this->product_id])->one();
//这里是验证逻辑
如果($your_product->\u id==12&&$your_product->stock>100)
{
$this->addError('product_id','product stock不应大于100');
}
否则如果($your_product->\u id==12&&$your_product->stock<10)
{
$this->addError('product_id','product stock不得小于10');
}
}

如果您可以列出视图中的所有字段,并指定每个字段所属的字段,那就太好了model@KiranMuralee-我添加了表说明。所以你是说,如果项目id值等于12,则库存最大值应为100。为什么不使用自定义验证器。我需要自定义验证器,但是我需要在购买验证中插入产品的id。我不知道怎么做。然而:)@sasha。我假设buy与产品有关系。因此,在buy模型中,有一个明确的产品对象,您可以使用。如果您可以向我展示您的buy和产品模型,我将得到一个清晰的图片,并且我将能够建议自定义验证代码是什么:)。