在多对多关系

时间:2017-11-27 22:43:17

标签: php yii yii2

我们如何为多对多关系添加限制。按照文档中的示例,假设我们有3个表postcategorypost_category。假设我有一个帖子列表,并且每个帖子都有可能选择一个类别。

如何限制关系,以便每个帖子不超过5个类别,每个类别100个帖子?

我已经成功使用了count(post->books) < 5 post_category来创建snore() { [[ -n "${_snore_fd:-}" ]] || exec {_snore_fd}<> <(:) read ${1:+-t "$1"} -u $_snore_fd || : } 控制器的动作,但我正在寻找一种方法来实现Yii友好,如果存在的话。

使用Yii 1.1.14。

1 个答案:

答案 0 :(得分:1)

您可以使用自定义验证规则。例如,在PostCategory模型中,添加以下规则

public function rules()
{
    return [
        [['post'], 'validateSize'],
    ];
}

然后在模型中的任何地方添加validateSize()

public function validateSize($attribute_name,$params){
   if(sizeof($this->post->categories) > 4)
      $this->addError($attribute_name, Yii::t('post', 'You cant have more than 5 categories per post'));
}

尝试创建属于已有4个类别

的帖子的新类别时,会出错