2017-05-02 2 views
0

Ich habe eine Inhaltstabelle mit viel Inhalt von verschiedenen Benutzern erstellt ... Ich versuche zu überprüfen, ob ein Inhalt von dem Benutzer erstellt wird, der angemeldet ist und Fügen Sie dann der Antwort ein neues Schlüsselwertpaar hinzu. Wenn also der Inhalt von user_id 1 erstellt wurde und ich Benutzer 1 bin, hat die Antwort ein Feld wie isOwn: 1 für das Inhaltsobjekt, das sein eigenes ist, aber nichts für den Inhalt wurde von jemand anderem erstellt.Laravel - Schlüssel/Wert zur Antwort hinzufügen, wenn Ids gleich sind

dies sind die Kriterien die ich habe:

$query = $model->select('contents.*', 'status_types.name as status', 'content_types.name as content_type') 
         ->join('status_types', 'status_types.id', '=', 'contents.status_type_id') 
         ->join('content_types', 'content_types.id', '=', 'contents.content_type_id') 
         ->with('platforms') 
         ->with('classifications') 
         ->withCount(['favorite' => function ($q) { 
          $q->where('user_id', '=', $this->request->user()->getIdentifier()); 
         }]) 
         ->withCount('likes') 
         ->inRandomOrder(); 

     return $query; 

ich habe versucht, wann und whereExist aber mir zurückkehren nur die vom Benutzer erstellt eine, nicht, wenn die Bedingung erfüllt ist.

Irgendwelche Ideen? Danke im Voraus.

Antwort

0

Sie müssen auf dem Modell verbinden und einen in dem für die gesamte Abfrage machen:

$query = $model->select('contents.*', 'status_types.name as status', 'content_types.name as content_type') 
         ->join('status_types', 'status_types.id', '=', 'contents.status_type_id') 
         ->join('content_types', 'content_types.id', '=', 'contents.content_type_id') 
         ->join('favorites', 'favorites.contents_id', '=', 'contents.id') // or whatever the relation is 
         ->with(['platforms', 'classifications']) 
         ->withCount(['favorite']) 
         ->withCount('likes') 
         ->where('favorites.user_id', '=', $this->request->user()->getIdentifier()) 
         ->inRandomOrder(); 

     return $query; 
Verwandte Themen