2017-09-22 14 views
1

これは私のシナリオです。Laravel 5.5同じテーブルの2つの関係

私は「チーム」という名前のテーブルとlaravel「ユーザー」テーブルをしました。

私は

「マネージャー」の「所有者」および他のためのチームとユーザ1の間の2つの関係を作るために
<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 


class Team extends Model 
{ 
    protected $table = 'team'; 

    public function owner(){ 
     return $this->belongsTo(User::class, 'id'); 
    } 

    public function manager(){ 
     return $this->belongsTo(User::class, 'id'); 
    } 

} 

をしようとしている。しかし、私が行う方法、予想通り何かが動作していないようですこれは正しい方法で?ありがとう。

答えて

3

あなたが同じidでこれを行うことができない、あなたはユーザーテーブル用の2列OWNER_IDとMANAGER_IDを作成する必要があり、あなたはあなたがあなたにどれを伝えるために、ユーザーテーブルに設定されたフラグを持つことができるテーブル

public function owner(){ 
     return $this->belongsTo('App\User','id','owner_id'); 
    } 

    public function manager(){ 
     return $this->belongsTo('App\User','id','manager_id'); 
    } 
+0

「チーム」テーブルに2列あります。 オーナー マネージャ – natas

+0

私の回答を編集しました – BugraDayi

0

を関連付けますこれは、セットアップのユーザーとチームの間の関係をすることができますし、参照しているユーザーの種類にフィルタを設定する意味

public function user(){ 
    return $this->belongsTo(User::class, 'id'); 
} 

public function scopeManager(){ 
    return $this->user()->where('role', 'manager'); 
} 

public function scopeOwner(){ 
    return $this->user()->where('role', 'owner'); 
} 

:1は、roleが、その後のような追加のスコープ法との関係を更新すると言う、チームとマネージャーを表します:

これは非常に包括的な回答ですが、十分なはずです。

何か欠けているそれらを指摘してください。

0

どうLaravelが所有者であるとマネージャーは誰が誰であるか知っているだろうか? データベース構造はどのように見えますか?あなたの現在のシナリオでは

、所有者()とマネージャー()関数は、同じ結果を返します。

また、現在の設定では、チームは1人のユーザーにしか属していないことになります(さらに、外部キーは通常プライマリキーのidという列に格納されています)。私は何が必要だと思う

は、ユーザーとチームとユーザーがチーム内で持っている役割を保存する中間テーブル間の多対多の関係です。あるユーザーが一度に1つのチームにしか所属していない場合は、ユーザーbelongsToチームとその役割をユーザーテーブルの別のフィールドに保存できます。

いくつかのアドバイス:

1)あなたの問題について詳しく説明してください。 「私は予想通り何かが動作していない」特異的ではなく、それは)あなたがしたいと何が実際に を何が起こったのか理解Laravelのドキュメントを読むために私たちを助けていません。 https://laravel.com/docs/5.5/eloquent-relationships

関連する問題