用户可以将文件附加到帖子:图片或视频。
数据库的结构如下:
posts
id
images
id
videos
id
post_attachment
post_id
attachment_id (id from images or videos table)
attachment_type ('image' or 'video')
困难在于,根据附件的类型,我们应该引用不同的表格。
我应该将laravel函数的哪些关系应用于Post
模型以通过post_attachment
表获取所有附件?
我认为这种关系来自一系列变形,但我无法准确理解哪一种。
class Post {
public function attachments () {
return $this->morph?????
}
}
请帮我写下这个案子的正确关系。
答案 0 :(得分:1)
您可能根本不需要数据透视表,例如,您可以使用Attachment
在Video
和hasMany()
之间创建关系。或者,为了简化数据库结构,我会在PostAttachment
模型
一个例子是:
class Post extends Model
{
public function attachment(){
return $this->hasMany(Attachment::class);
}
}
和你的附件模型:
class Attachment extends Model
{
public function post(){
return $this->belongsTo(Post::class);
}
}
也许在您的桌子上,有一个字段,指定允许的不同类型的附件:
$table->enum('attachment_type', ['video', 'image']);