CakePHP 2.6 验证规则对于每个 belongsTo Parent 是唯一的

CakePHP 2.6 Validation Rule isUnique per belongsTo Parent

我正在尝试弄清楚如何构建验证规则,我能给出的最简单的示例是 class 使用学生电子邮件注册。我希望每个 class 能够拥有唯一的学生电子邮件注册,但我也希望学生能够使用同一电子邮件注册多个 classes.

Class hasMany Students (id, name, limit)

Student belongsTo Class (id, email, class_id)

示例场景:

Class A, 有学生报名: abc@email.edu (如果abc@email.edu 再次报名class, 则不允许。)

Class B,可以让学生注册:abc@email.edu 再次因为它是不同的 class.

那么有没有办法将 isUnique 与另一个规则结合使用,或者这是自定义验证器的情况?谢谢!

我想我必须在这里回答一个不同的问题,因为你的模型关联没有意义。

如果任何一个学生可以参加多个 class 并且一个 Class 可以有多个学生,那么您的关联需要 hasAndBelongsToMany。那么,您的 students table 将不会有 class_id。相反,您可以设置一个联接 table、classes_students,它会有一个 class_idstudent_id.

然后您可以在联接 table 上添加验证规则,以确保没有学生两次参加相同的 class。请参阅此 Making HABTM relationships unique in CakePHP 问题。