关联表上的Laravel模型关系

时间:2017-06-18 14:58:51

标签: laravel laravel-5 laravel-5.4

所以,我有一个File模型,我有一个Dependency模型,它将指示某个File实例是否依赖于另一个实例。 (考虑包管理。)dependencies表非常简单:

id                 PRIMARY
file_id            INTEGER UNSIGNED
depends_on_file_id INTEGER UNSIGNED

files表也使用id作为主键。

但是我无法绕着正确的方式在模型上建立关系。我以为会是:

public function deps()
    {
        $this->belongsToMany('App\File', 'dependencies', 'file_id', 'id');
    }

但是当我尝试使用它时:

>>> $f = App\File::find(2);
=> App\File {#706
     id: 2,
     {redacted irrelevant properties here},
   }
>>> $f->deps();
=> null

根本没有收藏品。有一行种子数据,其中file_id 2 depends_on_file_id 1

我在这里想念的是什么?

1 个答案:

答案 0 :(得分:1)

按照你设计表格的方式说,它不是多对多,而是一对多关系你在这里:一个文件可以有很多依赖关系。您在dependencies表上有2个外键的事实并不是多对多,因为两个外键都引用同一个表 - files

正确设置relation后,您就可以了。

File.php模型

public function departments() {
    return $this->hasMany('App\Department', 'file_id', 'id');
}

Department.php模型

public function files() {
    return $this->belongsTo('App\File');
}

上面的关系没有经过测试,但你明白了。