2017-07-13 2 views
0

Ich möchte alle Bilder, die zu einer bestimmten Galerie gehören. Diese Bilder müssen aus der Bildklasse ausgewählt werden.alle Bilder, die zu einer bestimmten Galerie gehören

das ist Beziehung, innen Image-Klasse:

public function galleries() 
{ 
    return $this->belongsToMany(Gallery::class, 'gallery_image'); 
} 

und innen Galerie:

public function images() 
{ 
    return $this->belongsToMany(Image::class, 'gallery_image', 'gallery_id', 'image_id')->withPivot('order'); 
} 

Ich habe versucht, dies:

$images = Image::with(array(
    'galleries' => function ($query) use($search) 
    { 
     $query->where('slug', $search); 
    }->paginate() 

aber es gibt immer noch alle Bilder wieder selbst wenn ich eine bestimmte Galerie sende.

Kann mir jemand bei dieser Frage helfen?

Es muss mit Image :: und nicht Gallery :: Ich muss Bilder durch Bildklasse und nicht Galerie-Klasse wegen einer bestimmten Art, die ich tue dies tun. Also muß ich mit obiger Abfrage helfen und nicht um einen Vorschlag gehen mit Galerie :: some_query_here

Antwort

1

Sie sollten in der Lage sein, zu verwenden whereHas:

$images = Image::with('galleries') 
    ->whereHas('galleries', function ($query) use ($search) { 
     $query->where('slug', $search); 
    }) 
    ->paginate(); 

Hoffe, das hilft!

+0

Das ist die richtige Antwort auf die Frage, woHas, ich wusste es aber ich habe es vergessen, danke für die richtige Abfrage :) –

0

Warum versuchen Sie nicht zuerst die Galerie zu bekommen und dann seine Bilder erhalten:

$gallery = Gallery::with('images')->whereSlug($slug)->first(); 
$images = $gallery->images; 
+0

danke für deine antwort, aber ich habe speziell am ende meiner frage gesagt ich kann es nicht so machen –

+0

@maxit, warum kannst du es nicht so machen? Was Sie tun wollen, ist die Galerien aller Bilder zu filtern, nicht umgekehrt. – TheFallen

+0

Ich versuche, Bilder nicht Galerien zu filtern, Bilder können auf eine Reihe von verschiedenen Dingen gefiltert werden. –

Verwandte Themen