2017-06-18 17 views
0

Fileモデルがあります。Fileインスタンスが別のインスタンスに依存しているかどうかを示すDependencyモデルがあります。 (。パッケージ管理を考える)dependenciesテーブルは非常に簡単です:Laravel Model関係テーブルの関係

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 

は全くコレクションを得ていません。 1行のシードされたデータがあります。file_id 2 depends_on_file_id 1です。

私はここで紛失していますか?

答えて

1

テーブルを設計する方法は多対多ではありませんが、多対多のの関係: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'); 
} 

試験しなかった上記の関係が、あなたのアイデアを得ます。

+0

これはまだ空のセットを返していますが、当分の間、私は '$ d = App \ Dependency :: where( 'file_id'、2) - > get();' 。私は正気チェックに感謝します、私は長い間、関係が意味をなさないほど長くモデルから始めてきました。 –

+0

関係が正しく設定されていないようです。私が書いたように、私はそれをテストしなかった。しかし、私はあなたが正しい道にいると言います。 – lesssugar