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を作成する必要があると感じます。私はそれをどうやって行うのか分かりません。
にLaravelに添加した後 '> COMMENT-> reports-> user'このパスを試みましたか?私はこれがコードだとは言いませんが、この経路に従っていますか?投稿とコメントは関連していますか? –
( 'reports.user'、 'comment') - > latest() - > get(); 'を使って 'Post :: whereHas(' reports ') - >を試してみると、複数の関係を同時にロードすることができます。 –
投稿のために存在するコメントを取得し、レポートにはそれだけではないコメントを取得しないでください。私は本質的にこれらの2つのクエリをグループ化し、最新のもので整理したい: 'Post :: whereHas( 'reports') - > with( 'reports.user')' 'Comment :: whereHas( 'reports') - > with( 'reports.user') ' トップのコメントは、投稿に関連付けられたすべてのコメントを取得し、報告されたコメントは取得しません。おもう。 – user3325126