关系限制 [ octobercms ]

Posted

技术标签:

【中文标题】关系限制 [ octobercms ]【英文标题】:Relation Limit [ octobercms ] 【发布时间】:2019-08-16 18:16:51 【问题描述】:

我有一个名为Lessons 的模型,它有一个名为studentsbelongsToMany 关系和一个名为students_for_lesson 的表。每个课程的课程模型都有名为 number_of_studentsnumber_of_enrollments 的字段。

我想要的是在number_of_enrollments 值达到number_of_students 值时发出一条消息,停止为课程添加学生。

【问题讨论】:

【参考方案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

【讨论】:

以上是关于关系限制 [ octobercms ]的主要内容,如果未能解决你的问题,请参考以下文章

OctoberCMS (Laravel) 字段选择语句

Octobercms onSave 更新其他模型

在后端 Octobercms 中验证文件上传(图像尺寸)

OctoberCMS (Laravel) + Vue.js + Tailwind CSS 最佳设置

如何在octobercms中创建中间件

CORS Vue 和 OctoberCMS