首页 > 解决方案 > 如何制作一个通知表,与其他表建立雄辩的关系而不会产生太多“_id”列

问题描述

假设我有一个通知表,该表在生成另一个表的新日志时生成。假设我有 3 个不同用途的日志,即:sms_logs、call_logs 和约会日志。

我想在不使用 sms_logs_id、call_logs_id 和 Appointment_logs_id 的情况下与每个日志建立关系​​。相反,我只想构建两列,一列用于类型,另一列用于 ID。因此,例如生成一个 id 为 187 的 sms 日志,它还将生成一个 notification_id 为 187 且类型为“sms”的通知日志。

我将如何创建它?谢谢!

标签: phpdatabaselaraveleloquent

解决方案


好问题。

您只需在notifications表中放置两个字段。foreign_idlog_type

每当您添加日志时,您都必须进行log_type相应的设置。Notification然后在您的模型中添加此关系。

    public function foreignModel()
    {
        switch($this->log_type){
            case "call_log":
                return $this->belongsTo('App\Call', 'foreign_id');
                break;
        }

    }

我没试过,但希望它能正常工作。

如果您正在寻找比这更动态且不那么健壮的东西,那么我认为它不存在。


推荐阅读