Связывание модели (т.е. комментарий) со многими другими моделями (например, пост, профиль)

Я строю приложение PHP с Laravel, где у меня есть Comment Модель и многие другие модели, к которым Comment можно прикрепить к.

Например, Profile может иметь много Comment но также Post может иметь много Comment,

Должен ли я разделить Comment в двух моделях (ProfileComment а также PostComment) или я должен держать их вместе, как это?

class Comment {

public function user()
{
return $this->hasOne('User');
}

public function profile()
{
return $this->belongsTo('Profile');
}

public function post()
{
return $this->belongsTo('Post');
}

}

Если я буду хранить их вместе, то на уровне базы данных, как мне управлять comments Таблица?

Я думал о наличии следующих столбцов:

integer: id - auto-incrementing id
integer: user_id - the user id
integer: foreign_id - profile/post id
varchar: type - which model? profile or post?
varchar: content - the actual comment

Это неправильный подход?

0

Решение

если вы хотите использовать 1 таблицу, вам нужно сделать так, чтобы модель комментариев трансформировалась.
если вы не хотите использовать morph, сделайте разделенный.

Я думаю, что если вы будете использовать схему из вашего вопроса, вы будете использовать morph.

Я не знаю, где нужно создавать больше таблиц, потому что все комментарии будут иметь одинаковую структуру (id, user_id (author), comment)

так что в этом случае вам нужно будет просто сделать это (тегируемый).

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector