Laravel 5.4关系路由绑定

时间:2017-08-10 14:34:46

标签: laravel-5 routes relationship

我正在制作图片库。图像与标签有很多关系。图像与catagories有很多关系。

$images = $category->images;
$images = $tag->images;

public function images(Category $category = null)
{   
    $images = $category->images;

    return view('pages.images.index', compact('images'));
}

此代码上的路径模型绑定工作正常,我可以对标记执行相同操作,但我要做的是过滤类别然后标记。

$images = $tag->category->images;

例如,如果我的图片标记为" dog"和一个类别" brown"查询只返回所有褐色的狗。

我可以这样做吗?标签和类别都可以有多个选项,所以我希望有这样的路线......

mysite.com/images/ {类别} / {标签}

感谢您提供任何帮助或最佳方向。

2 个答案:

答案 0 :(得分:0)

您可以使用laravel中的构建功能

Image::whereHas('categories', function ($query) use ($category) {
    $query->where('NAME', '=', $category);
})->whereHas('tags', function ($query) use ($tag) {
    $query->where('NAME', '=', $tag);
})->get();

将NAME替换为您要过滤的所需字段。

答案 1 :(得分:0)

您可以按照说明声明路线,然后将它们用作连接到路线的控制器方法中的参数。

因此,如果您声明类似Route::get('/register/{token1}/{token2}','RegisterController@confirm');的路由,则可以在方法中获取这些通配符,就像正常参数一样: public function confirm(Request $request, $token1, $token2) {}