2016-11-24 7 views
0

Ich habe eine Frage zu Laravel-Abfragen, also habe ich eine Upload-Modell und Datenbanktabelle, die alle meine Bilder speichert. Dann gibt es ein Aktivitätsmodell und eine Datenbanktabelle, die alle meine Aktivitäten speichert. Für jede Aktivität möchte ich ein Bild.Laravel Query-Hilfe benötigt

So hat mein Aktivitätsmodell eine Spalte 'uploads_id'. Ich schrieb die Abfrage so:

$activity_images = DB::table('uploads') 
->join('activities', 'uploads.id', '=', 'activities.upload_id') 
->where('uploads.id', '=', 'activities.upload_id') 
->get(); 

Es kann nicht das richtige Bild finden, was mache ich falsch?

Antwort

0

Sie sind zweimal in Ihrem join und where-Klausel "Beitritt". Sie verbinden uploaden.id und activities.upload_id einmal in der join und wieder in der where Klausel.

Wenn Sie einen speziellen upload.id abfragen möchten, sollten Sie Ihre Abfrage wie folgt aussehen:

$activity_images = DB::table('uploads') 
->join('activities', 'uploads.id', '=', 'activities.upload_id') 
->where('uploads.id', '=', '<yourUploadID>') 
->get(); 

Wenn Sie alle Bilder wollen, können Sie die where Anweisung löschen.

$activity_images = DB::table('uploads') 
->join('activities', 'uploads.id', '=', 'activities.upload_id') 
->get(); 

Wenn Sie join ein inner join verwenden verwendet. Sie können auch leftJoin verwenden, wenn Sie alle Einträge aus der Tabelle hochladen möchten.

$activity_images = DB::table('uploads') 
->leftJoin('activities', 'uploads.id', '=', 'activities.upload_id') 
->get(); 

Löst es Ihr Problem?

+0

Der zweite Vorschlag löste mein Problem danke. Ich habe bereits die $ id der Aktivität über die URL übergeben, aber ich habe eine zweite für die upload_id hinzugefügt. Seltsame URL jetzt, aber es funktioniert. –