Я строй приложения 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
Это неправильный подход?
если вы хотите использовать 1 таблицу, вам понадобится сделать морфинг модели Comment. если вы не хотите использовать морфинг, разделите его.
Я думаю, что если вы будете использовать схему из своего вопроса, вы будете использовать морф.
Я не знаю, где нужно делать больше таблиц, потому что все комментарии будут иметь одинаковую структуру (id, user_id (автор), комментарий)
поэтому в этом случае вам нужно просто сделать его морфинг (tagable).