Laravel 5.3文件表与多个表有关

时间:2016-09-26 20:15:13

标签: php mysql laravel

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

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

问题值进入'questions_table',文件进入'files_table',用户ID也进入'files_table'。

问题是! (对不起,长期介绍): 我应该使用数据透视表吗?或者只是从1.'users_table'到'files_table'和&的双重一对多关系。 2.从'question_table'到'files_table'?

1 个答案:

答案 0 :(得分:2)

我认为这是Polymorphic Relationship的完美用例。

以下是表格的结构:

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 Documentation

上了解有关此类关系的更多信息