Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.3与多个表相关的文件表_Php_Mysql_Laravel - Fatal编程技术网

Php Laravel 5.3与多个表相关的文件表

Php Laravel 5.3与多个表相关的文件表,php,mysql,laravel,Php,Mysql,Laravel,我有一个名为“files”的表,我想包含我所有的用户文件。 这些文件可以从不同的视图上传,并且应该与不同的表相关:问题表、答案表、评论表、消息表等。。。但是,所有这些都将与users表相关,这样我就知道谁是文件的所有者 示例:“用户提出问题,并附上图片以帮助其他用户更轻松地理解问题。” 问题值进入“问题表”,文件进入“文件表”,用户ID也进入“文件表” 问题是!(很抱歉做了这么长的介绍): 我应该使用透视表吗?或者只是从1“用户表”到“文件表”以及从“问题表”到“文件表”的双一对多关系 我认为这

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

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

问题值进入“问题表”,文件进入“文件表”,用户ID也进入“文件表”

问题是!(很抱歉做了这么长的介绍):
我应该使用透视表吗?或者只是从1“用户表”到“文件表”以及从“问题表”到“文件表”的双一对多关系

我认为这是一个完美的应用案例

以下是表格的结构:

users
 - id
 - name

questions
 - id
 - title

files
 - id
 - user_id
 - filable_id
 - filable_type
files
表中,您可以看到
filable\u id
字段,该字段将引用问题id、答案id、注释id。以及
filable\u 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();
    }
}

我强烈建议您在

上了解更多关于这种关系的信息,我认为这是一个完美的案例

以下是表格的结构:

users
 - id
 - name

questions
 - id
 - title

files
 - id
 - user_id
 - filable_id
 - filable_type
files
表中,您可以看到
filable\u id
字段,该字段将引用问题id、答案id、注释id。以及
filable\u 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();
    }
}

我强烈建议您在

上了解更多关于这种关系的信息,我建议不要在表名中包含
\u表
。除此之外,您是否想象许多文件属于另一个表中的单个记录?此外,您希望能够从文件中访问链接记录(问题等),还是只希望从链接记录中访问文件?这可以通过文件表上的1:n变形轻松解决,因为文件只能属于一个目标(问题、答案等)。对于所有者来说,它只是创建者的id,您可以将其作为列添加到“问题”和“文件”表中。_table只是表示我在谈论表,而不是表的名称。问题属于用户,文件属于问题,也属于用户。我建议不要在表名中包含
\u table
。除此之外,您是否想象许多文件属于另一个表中的单个记录?此外,您希望能够从文件中访问链接记录(问题等),还是只希望从链接记录中访问文件?这可以通过文件表上的1:n变形轻松解决,因为文件只能属于一个目标(问题、答案等)。对于所有者来说,它只是创建者的id,您可以将其作为列添加到“问题”和“文件”表中。_table只是表示我在谈论表,而不是表的名称。问题是,问题属于用户,文件属于问题,也属于用户。谢谢,伙计,我就是这么做的。我只是想确定我很好:)谢谢,伙计,我就是这么做的。只是想确保我很好:)