2017-08-12 12 views
0

redditのようなモデレーションレポートキューを作成しようとしています。キューでは、私は投稿とコメントが一緒に表示さ持つようにしたいが、私は得ることができるすべては、2つのクエリで1、または他のです:ORMで2つのクエリの結果をグループ化する

//Get all posts with reports 
Post::whereHas('reports')->with('reports.user')->latest()->get(); 
// Get all comments with reports 
Comment::whereHas('reports')->with('reports.user')->latest()->get(); 

コメント、投稿、報告と多型の関係があります。テーブル

ここでは、記事のための出力です:

{ 
"id": 7, 
"author_id": 1, 
"title": "A forum post!", 
"body": "<p>Some Forum post content</p>", 
"created_at": "2017-08-08 23:03:22", 
"updated_at": "2017-08-08 23:03:22", 
"reports": [ 
    { 
     "id": 5, 
     "user_id": 1, 
     "content": "Rule 1", 
     "reportable_id": 7, 
     "reportable_type": "App\\Post", 
     "created_at": "2017-08-11 19:32:02", 
     "updated_at": "2017-08-11 19:32:02", 
     "user": { 
     "id": 1, 
     "role_id": 1, 
     "name": "Admin", 
     "created_at": "2017-08-01 18:37:18", 
     "updated_at": "2017-08-10 18:59:52" 
     } 
     } 
    ] 
}, 

は、どのように私は投稿とコメントの両方を照会でしょうか?

私は投稿にコメントを熱心に載せたくありません。私は上記の2つの質問に一緒に参加したい。私は読んだ後、私はそれらを一緒に結合できるとは思わないので、私は二つの質問の間にunionを作成する必要があると感じます。私はそれをどうやって行うのか分かりません。

+0

にLaravelに添加した後 '> COMMENT-> reports-> user'このパスを試みましたか?私はこれがコードだとは言いませんが、この経路に従っていますか?投稿とコメントは関連していますか? –

+0

( 'reports.user'、 'comment') - > latest() - > get(); 'を使って 'Post :: whereHas(' reports ') - >を試してみると、複数の関係を同時にロードすることができます。 –

+0

投稿のために存在するコメントを取得し、レポートにはそれだけではないコメントを取得しないでください。私は本質的にこれらの2つのクエリをグループ化し、最新のもので整理したい: 'Post :: whereHas( 'reports') - > with( 'reports.user')' 'Comment :: whereHas( 'reports') - > with( 'reports.user') ' トップのコメントは、投稿に関連付けられたすべてのコメントを取得し、報告されたコメントは取得しません。おもう。 – user3325126

答えて

0

投稿やコメントを出発点としてこれに近づくのではなく、レポートモデルで始めるのはいかがですか?レポートテーブルのクエリ(およびコメント/投稿への参加)がより自然な解決策である可能性があることを示す「モデレートレポートキュー」を構築しているとしました。

Reports::latest()->with('reportable', 'user')->get() 

イーガーローディングはPR https://github.com/laravel/framework/pull/13737

+0

投稿/コメントはキューに一度だけ表示され、その下に報告された回数のリストが表示されます。それが報告されるたびに投稿/コメントがキューにリストされませんか? – user3325126

+0

最新のレポート、または最新の投稿/コメントの順にリストしますか?最近のレポートでは、依然としてレポート表を照会し、投稿/コメントごとにグループ化して、それぞれのレポート数をカウントすることができます。 – redmallard

+0

最新のコメント/投稿。これまでのご協力ありがとうございます。 – user3325126