关于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,
        ];
    }

```

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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');
    }
2个月前 评论
勇敢的心 (楼主) 2个月前
lovewei 2个月前
勇敢的心 (楼主) 2个月前
lovewei 2个月前

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

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

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

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!