2017-09-11 24 views
0

複数のクラスタを管理できるユーザーがいて、各クラスタには複数の国が属しています。 私が使用して認証ユーザーのクラスターを得た:laravelの多対多の関係から配列を取得する方法は?

$userClusters = Auth::user()->clusters()->lists('name','cluster_id'); 

は今、私は、各クラスタのための国を取得する必要があり

国の関係

public function countries() 
{ 
    return $this->hasMany('App\Country'); 
} 
(私は、クラスタと国の間には多くの関係に1を持っています)
+0

Laravelのどのバージョンをお使いですか?あなたの雄弁な関係のための方法を示すことができますか? –

+0

クラスタモデルで5.2 リレーションシップを使用しています。 public function countries() { return $ this-> hasMany( 'App \ Country'); } –

答えて

1

で読み:

$clusters = Auth::user()->load('clusters.countries')->clusters; 

あなたはすぐに、クラスタの関係をアクセスするようload()方法は、元のモデルを返します。

希望すると便利です。

+0

私はlaravelを使い慣れているので、これをdd()でどのように表示するか教えてください。たとえば、クラスタ名と各クラスタ内の国を取得するには? –

+0

@AhmedHammamキーがクラスタ名で値が国のコレクションである配列の場合と同じですか? –

+0

あなたのコードは素晴らしいと思われます:) 私はdd($ clusters [0] - > countries)を使いました。第1クラスターの国を調べる。 –

0
$userClusters = User::with('clusters.countries')->where('id',Auth::id())->get(); 
+0

私はこのエラーが発生しました:メンバ関数を呼び出す国()に文字列 –

+0

私は答えを編集しました –

2

試してみる

$userClusters = Auth::user()->clusters 
$userClusters->load('countries') 

、それはあなたのような何かができる

laravel eager loading

+0

$ userClusters-> load( 'countries')の出力をdd();最後にwrite - > toArray()またはcollect($ model) - > toArray(); –

+0

を返します。 \t それ $ userClusters =認証::ユーザー()してみてください - https://laravel.com/docs/5.5( >クラスター $ userClusters->負荷( '国')と、それは[laravelコレクション]で読みます/ collections) –

関連する問題