我想检查给出的categoryid是否是现有类别。我已经尝试了多个值作为目标属性,但到目前为止我还无法使用它。
当我按原样执行查询时,它会为我要添加的内容返回正确的值。
public function rules()
{
return [
[['categoryid'], 'integer'],
['categoryid', 'exist', 'targetAttribute' => FaqCategory::findOne(['id=:id', ['id'=>'categoryid']])['id']],
[['question', 'answer'], 'required'],
[['answer'], 'string'],
[['question'], 'string', 'max' => 255]
];
}
我偶然发现了targetClass。然而这次我收到了Class' FaqCategory'未找到。类可以在相同的命名空间下找到。
['categoryid', 'exist', 'targetClass' => 'FaqCategory']
答案 0 :(得分:14)
你必须使用带有命名空间的类名,它应该是这样的:
['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory']
或者
['categoryid', 'exist', 'targetClass' => FaqCategory::className()]
http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#exist
答案 1 :(得分:8)
感谢soju得到答案。只需添加targetAttribute即可将categoryid与类别的id进行比较。
['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory', 'targetAttribute' => 'id'],