如何在一个模型yii2中编写两个表的规则,我的代码是:
public function rules()
{
return [
[['class_id', 'section'], 'required'],
[['class_id', 'active'], 'integer'],
[['section'], 'string', 'max' => 20]
];
}
这是针对一个表,我如何在单个模块中为多个表编写这些规则。
提前致谢。
答案 0 :(得分:1)
这几乎是不可能的。
这样做不是一个好主意,而且还有更好的方法。每个ActiveRecord模型只负责一个表。 single responsibility principle指示它不应该干扰类管理的事情。因此,让模型验证不同表的规则会违反该原则。
处理这种情况的更好方法是创建一个新模型(yii\base\Model
,而不是ActiveRecord),然后处理输入。它应该将部分验证委托给活动记录模型,但可以自己添加额外的验证。该模型还可以根据输入设置不同的场景。这样,您就可以清楚地分离模型之间的责任。
答案 1 :(得分:0)
如果要使用不同的表,只需在模型中编写规则并更改tableName属性即可。我还建议使用方案。 更多信息:https://github.com/yiisoft/yii2/blob/master/docs/guide/structure-models.md。