2017-12-05 13 views
1

この質問には複数のDBMS関連の回答が含まれることがありますが、そうではない可能性があることを理解しています。Mongooseのpopulate()メソッドと同等のLaravel(Eloquent)

私は、Userと彼のPostsのように、バックエンドのデータを非同期に取得する必要があります。私が持っているしたいのですが結果はまたの配列を含むように私のVueVMのデータでusersオブジェクトである

mounted: function() { 
    axios.get('/users') 
     .then((response) => { 
      this.users = response.data; 
     }) 
     .catch(function (err) { 
      // Handle this 
     }); 
} 

:それはいいだろうように、私のような何かを書くために、フロントエンドにAxiosでVue2を使用しています各Userposts。現在、次のように私は私のバックエンド側コントローラのカスタム連想配列を作成:

$posts = Post::where('user_id', $id)->get(); 
return json_encode(['user' => $user, 'posts' => $posts]); 

あるいは、実現可能な、私もかなり便利ですhas_many方法を、使用しますが、私はこのソリューションはかなり醜いと再利用性を欠く見つけるを。

MongooseとMongoDBでは、私はpopulate()メソッドを使用しますが、これはEloquentでこれと同等のものを見つけることができません。

提案がありますか?

答えて

0

あなたは)(投稿を定義し、あなたのUserモデルで関係している場合は、ユーザーを取得する際に、することができます熱心なロード関連データ:

$users = User::with('posts')->get(); 

または特定のユーザー:

$user = User::with('posts')->find($id); 

その後、$user->postsには、関連する投稿モデルのコレクションが含まれます。

あなたが読むことをお勧めします。https://laravel.com/docs/5.5/eloquent-relationships

+0

うん、そうだった。申し訳ありませんが、私はドキュメントにもっと時間を費やす必要がありました。詳細な情報をお探しの場合は、正しいセクションは https://laravel.com/docs/5.5/eloquent-relationships#eager-loadingです。 – ibanjo