2017-06-18 135 views
0

所以,我有一個File模型,並且我有一個Dependency模型,它將指示特定的File實例是否依賴於另一個模型。 (認爲​​包管理。)的dependencies表是非常簡單的:關聯表上的Laravel模型關係

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

通過您設計表格的方式說,它不是多對多的,但是一對多您有這樣的關係:一個文件可以有很多依賴關係。在dependencies表中有兩個外鍵的事實並不是多對多的,因爲兩個外鍵都引用同一個表 - 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'); 
} 

上面並沒有進行測試的關係,但你的想法。

+0

這仍然是返回一個空集,但暫時我正在通過做'$ d = App \ Dependency :: where('file_id',2) - > get(); 。儘管我很欣賞理智檢查,但我始終在模特身上做了足夠長的時間,以至於人際關係沒有任何意義。 –

+0

似乎關係錯誤地設置。正如我寫的,我沒有測試它。但我會說你走在正確的道路上。 – lesssugar