2017-07-13 32 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

我试图过滤图像而不是图库,图像可以在许多不同的东西上过滤。 –

相关问题