Ich versuche, eine Moderationsberichte Warteschlange wie reddit aufzubauen. In der Warteschlange möchte ich Beiträge und Kommentare zusammen zeigen haben, aber alles, was ich bekommen kann, ist eine, oder das andere mit zwei Anfragen:Gruppieren der Ergebnisse von zwei Abfragen in eloquenten ORM
//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();
Es gibt eine polymorphe Beziehung mit den Kommentaren, Beiträge und Berichte.
TischHier ist die Ausgabe für Beiträge:
{
"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"
}
}
]
},
Wie würde ich die beiden Beiträge und Kommentare abfragen?
Bearbeiten Ich möchte nicht gerne die Kommentare mit den Posts laden. Ich möchte die beiden Abfragen, die ich oben aufgelistet habe, zusammenfügen. Ich fühle nach dem Lesen, dass ich ein union zwischen den zwei Abfragen erstellen muss, weil ich glaube nicht, dass ich sie zusammenfügen könnte. Ich bin mir nicht sicher, wie ich das machen soll.
dieser Weg versucht 'post-> comment-> Berichte-> user'? Ich meine nicht, dass das ein Code ist, aber diesem Pfad folgend? ist Post und Kommentare verwandt? –
Sie können mehrere Beziehungen gleichzeitig laden, versuchen Sie 'Post :: whereHas ('reports') -> mit ('reports.user', 'comment') -> latest() -> get();' –
Das würde Holen Sie sich die Kommentare, die für einen Beitrag existieren und nicht die Kommentare, die nur Berichte haben, nicht wahr? Ich möchte im Wesentlichen diese beiden Abfragen gruppiert und dann organisiert von spätestens: 'Post :: whereHas ('Berichte') -> mit ('reports.user')' 'Kommentar :: WhereHas ('Berichte') - > with ('reports.user') ' Der Top-Kommentar würde alle Kommentare erhalten, die einem Post und nicht einem Kommentar zugeordnet sind. Ich denke. – user3325126