关于Laravel多态关联自定义字段的使用疑问

问题#

我有个消息表 messages,其中 sender_type 字段判断类型,1 表示老师,2 表示学生,sender_id 是对应的 id

文档中的解决方案,但是和我的需求不匹配#

如下是文档中案例,但是我的字段并不是对应的模型名称,而是 1、2,我不想写到服务提供者中,请问我能不能拿到 Message 模型中单独定义

    // 文档中的案例
    Relation::enforceMorphMap([
        'post' => 'App\Models\Post',
        'video' => 'App\Models\Video',
    ])
    // 如下是我yy的代码
    Message extend Model {
        public $morps = [
            1 => App\Models\User,
            2 => App\Models\Teacher,
        ];
    }

```

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 11

    /*
    * 可以 把 sender_id 字段的值 存到中间表里
    * 
    * 例如创建2个中间表:
    *   创建 messages_teacher 表用来定义 消息和老师的对应关系,字段是 messages_id 和 teacher_id 
    *   创建 messages_student 表用来定义 消息和学生的对应关系,字段是 messages_id 和 student_id
    * 
    *   在 messages 的model里 定义关联查询
    */
    // 查询老师
    public function teacher(): BelongsToMany
    {
        return $this->belongsToMany(Teacher::class, 'messages_teacher', 'messages_id', 'teacher_id');
    }
    // 查询学生
    public function student(): BelongsToMany
    {
        return $this->belongsToMany(Student::class, 'messages_student', 'messages_id', 'student_id');
    }
4个月前 评论
勇敢的心 (楼主) 4个月前
lovewei 4个月前
勇敢的心 (楼主) 4个月前
lovewei 4个月前

必须得写到 Provider 中,他那个是个全局注册, 必须得同样的方法调用,不太清除 public $morps = [...] 这个写法是怎么来的

4个月前 评论
勇敢的心 (楼主) 4个月前
勇敢的心 (楼主) 4个月前
还不出来 (作者) 4个月前

orm 关联模型设计规范依赖于表的三范式设计规范,你这种表设计本来就是反范式来的,反范式又没有具体标准,对应到实现上也是五花八门,纠结这个没啥意义。

4个月前 评论