【问题标题】:Relation Limit [ octobercms ]关系限制 [ octobercms ]
【发布时间】:2019-08-16 18:16:51
【问题描述】:
我有一个名为Lessons 的模型,它有一个名为students 的belongsToMany 关系和一个名为students_for_lesson 的表。每个课程的课程模型都有名为 number_of_students 和 number_of_enrollments 的字段。
我想要的是在number_of_enrollments 值达到number_of_students 值时发出一条消息,停止为课程添加学生。
【问题讨论】:
标签:
octobercms
octobercms-plugins
october-partial
【解决方案1】:
一种方法是监听模型关系事件(BelongsToMany):beforeAttach、afterAttach、beforeDetach、afterDetach
在这种情况下,如果您需要在创建关系之前运行一些验证,请使用beforeAttachevent:
LessonModel::extend(function ($model) {
/** Before Attach */
$model->bindEvent('model.relation.beforeAttach', function ($relationName, $attachedIdList, $insertData) use ($model) {
// Student => Lesson Relation
if ($relationName === 'your-lesson-student-relation-name') {
// Check Number of enrollments & other stuff ...
// throw new \ApplicationException('Cannot add student. Maximum number of enrollments reached.');
}
});
});
看到这个SO post 和这里关于extending models