Как создать таблицу уведомлений, которая красноречиво устанавливает связи с другими таблицами, не создавая слишком много столбцов "<source> _id" - PullRequest
0 голосов
/ 30 марта 2020

Предположим, у меня есть таблица уведомлений, которая генерируется при создании нового журнала из другой таблицы. Предположим, у меня есть 3 разных журнала с разным назначением, а именно: sms_logs, call_logs и meeting_logs.

Я хочу установить связь с каждым журналом без использования sms_logs_id, call_logs_id и meeting_logs_id. Вместо этого я хочу построить только два столбца, один для типа, а другой для идентификатора. Так, например, журнал смс генерируется с идентификатором 187, он также генерирует журнал уведомлений с уведомлением_id 187 и типом «sms».

Как я смогу создать это? Спасибо!

1 Ответ

0 голосов
/ 30 марта 2020

Хороший вопрос.

Вы должны поместить только два поля в таблицу notifications. foreign_id и log_type.

Каждый раз, когда вы добавляете журнал, вы должны установить log_type соответственно. Затем добавьте это отношение в вашу Notification модель.

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

    }

Я не пробовал, но надеюсь, что она будет работать нормально.

Если вы ищете что-то более динамичное c и менее надежный, чем этот, тогда я не думаю, что он существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...