繁体   English   中英

Laravel 5.3文件表与多个表相关

[英]Laravel 5.3 files table related to multiple tables

我有一个名为“文件”的表,我想包含所有用户文件。 这些文件可以从不同的视图上传,并且应该与不同的表相关:问题表,答案表,评论表,消息表等...但是,所有这些文件也都与用户表相关,这样我就会知道文件的所有者是谁。

示例:“用户提出问题,并附上图片以帮助其他用户更轻松地理解问题。”

问题值进入“ questions_table”,文件进入“ files_table”,用户标识也进入“ files_table”。

问题是! (很长的介绍很抱歉):我应该使用数据透视表吗? 还是只是从1.'users_table'到'files_table'和2.从'question_table'到'files_table'的一对多关系?

我认为这是多态关系的理想用例。

这是表的结构:

users
 - id
 - name

questions
 - id
 - title

files
 - id
 - user_id
 - filable_id
 - filable_type

files表中,您可以看到一个filable_id字段,该字段将引用问题ID,答案ID,评论ID。 filable_type将告诉记录哪个对象与此文件关联。

class Question extends Model
{
    /**
     * Get all of the question's files.
     */
    public function files()
    {
        return $this->morphMany('App\File', 'filable');
    }
}

class File extends Model
{
    /**
     * Get all of the owning filable models.
     */
    public function filable()
    {
        return $this->morphTo();
    }
}

我强烈建议您在Laravel文档中详细了解这种类型的关系

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM