2017-07-13 31 views
0

我想獲取屬於特定圖庫的所有圖像。這些圖像必須從Image類中選擇。獲取屬於特定圖庫的所有圖像

這是關係,內部圖像類:

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

和內廊:

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

我已經試過這樣:

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

,但它仍然會返回所有圖像回連當我發送它特定的畫廊。

任何人都可以幫助我解決這個問題嗎?

它必須使用Image ::而不是Gallery ::我必須通過圖像類而不是Gallery類來選擇圖像,因爲我正在執行此操作的特定方式。所以,我需要用上面的查詢,而不是建議幫助去與畫廊:: some_query_here

回答

1

你應該能夠使用whereHas

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

希望這有助於!

+0

這是對這個問題的正確答案,在哪裏,我知道它,但我忘了它,謝謝你給我正確的查詢:) –

0

你爲什麼不嘗試先拿到畫廊,然後獲取其圖像:

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

感謝您的回答,但我特意告訴我的問題結束我不能這樣做 –

+0

@maxit,爲什麼你不能這樣做?你想要做的是過濾所有圖像的畫廊,而不是相反。 – TheFallen

+0

我試圖過濾圖像而不是圖庫,圖像可以在許多不同的東西上過濾。 –

相關問題