【问题标题】:write rules for two tables in one model yii2在一个模型 yii2 中为两个表编写规则
【发布时间】:2015-07-11 16:42:32
【问题描述】:

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

public function rules()
{
    return [

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

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

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

    ];
}

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

提前致谢。

【问题讨论】:

    标签: php yii2


    【解决方案1】:

    简答

    这几乎是不可能的。

    可能有帮助的答案

    这样做不是一个好主意,但有更好的方法。每个 ActiveRecord 模型只负责一个表。 single responsibility principle 规定,它不应干扰类管理的事物。因此,让模型验证不同表的规则将违反该原则。

    处理这种情况的更好方法是创建一个新模型(yii\base\Model,而不是 ActiveRecord),然后它会处理输入。它应该将部分验证委托给活动记录模型,但可以自己添加额外的验证。该模型还可以根据输入设置不同的场景。这样,您就可以清楚地分离模型之间的职责。

    【讨论】:

      【解决方案2】:

      如果您想使用不同的表,您可以简单地在模型中编写规则并更改 tableName 属性。我还建议使用场景。 更多信息:https://github.com/yiisoft/yii2/blob/master/docs/guide/structure-models.md

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 1970-01-01
        相关资源
        最近更新 更多