yii2验证无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2验证无效相关的知识,希望对你有一定的参考价值。
我需要从另一个表中验证一个值,它们都是字段类型decimal
如果金额(模型1)可用(模型2数据选择)
模型1规则
public function rules()
{
return [
[['amount'], 'checkAvailable','skipOnEmpty' => false],
];
}
自定义验证功能
public function checkAvailable($attribute, $params)
{
$caid = $this->capex_budget_id;
$available = Capexbudget::find()
->select(['available'])
->where('id = :caid', [':caid' => $caid])
->all(); // select amount from Capexbudget where id = $caid
if ($this->amount > $available){
$this->addError('amount', 'not enough');
}
}
我可以从Capex Budget获得我选择的ID的数据
这是查询日志
但验证不工作它不比较$ this-> amount和$ available之间的价值我想念的东西。
答案
首先,您在这里选择与where
条件匹配的所有记录:
$available = Capexbudget::find()
->select(['available'])
->where('id = :caid', [':caid' => $caid])
->all(); // HERE
您应该将函数all()
更改为one()
,以获得一条记录。第二件事是,如果你使用all()
或one()
,那些方法会返回对象,而不是值。
要使其工作,您应该将if
语句更改为:
if ($this->amount > $available->available){ //here, compare to attribute `available`
以上是关于yii2验证无效的主要内容,如果未能解决你的问题,请参考以下文章