Одним из способов является прослушивание событий отношения модели (BelongsToMany
): beforeAttach , afterAttach , beforeDetach , afterDetach
В этом случае, если вам нужно выполнить некоторые проверки перед созданием отношения, используйте событие beforeAttach
:
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 & здесь о расширяющиеся модели