在一个模型中为两个表写规则yii2

时间:2015-07-11 16:42:32

标签: php yii2

如何在一个模型yii2中编写两个表的规则,我的代码是:

public function rules()
{
    return [

        [['class_id', 'section'], 'required'],

        [['class_id', 'active'], 'integer'],

        [['section'], 'string', 'max' => 20]

    ];
}

这是针对一个表,我如何在单个模块中为多个表编写这些规则。

提前致谢。

2 个答案:

答案 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