Yii2模型规则,如何在使用exist的同时使用另一个table?
Yii2 model rules, how to use another table whilst using exist?
我想检查给定的类别 ID 是否是现有类别。我已经尝试了几个值作为目标属性,但到目前为止我无法让它工作。
当我按原样执行查询时,它 returns 是我要添加的正确值。
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]
];
}
- 更新
我偶然发现了目标Class。然而这一次我收到 Class 'FaqCategory' not found。 Class 将在同一命名空间下找到。
['categoryid', 'exist', 'targetClass' => 'FaqCategory']
您必须使用带命名空间的 class 名称,它应该类似于:
['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory']
或者
['categoryid', 'exist', 'targetClass' => FaqCategory::className()]
http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#exist
得到答案感谢soju。只需要添加 targetAttribute 来比较 categoryid 和类别的 id。
['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory', 'targetAttribute' => 'id'],
我想检查给定的类别 ID 是否是现有类别。我已经尝试了几个值作为目标属性,但到目前为止我无法让它工作。
当我按原样执行查询时,它 returns 是我要添加的正确值。
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]
];
}
- 更新
我偶然发现了目标Class。然而这一次我收到 Class 'FaqCategory' not found。 Class 将在同一命名空间下找到。
['categoryid', 'exist', 'targetClass' => 'FaqCategory']
您必须使用带命名空间的 class 名称,它应该类似于:
['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory']
或者
['categoryid', 'exist', 'targetClass' => FaqCategory::className()]
http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#exist
得到答案感谢soju。只需要添加 targetAttribute 来比较 categoryid 和类别的 id。
['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory', 'targetAttribute' => 'id'],