所以,我有一个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
。
我在这里想念的是什么?
答案 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');
}
上面的关系没有经过测试,但你明白了。