2017-08-10 23 views
0

私はイメージギャラリーを作っています。画像には、タグとの多対多の関係があります。画像はまた、カテゴリーとの多対多の関係を持っています。このコードに結合Laravel 5.4関係ルートバインディング

$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; 

たとえば、「ブラウン」のクエリは茶色ですべての犬を返します。

私はこれを行うことができますか?私はこのようなルートを期待していたので、タグやカテゴリの両方が...複数のオプションを持つことができ

mysite.com/images/{category}/{tag}

任意の助けてくれてありがとうまたは行くための最善の方向。

答えて

0

機能

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

はあなたがフィルタリングする目的のフィールドで名を置き換えwhereHasあなたはlaravelでビルドを使用することができます。

+0

ありがとう:

あなたはRoute::get('/register/{token1}/{token2}','[email protected]');のようなルートを宣言するのであれば、方法でこれらのワイルドカードを取得することが可能であるだけで、通常のパラメータのように確認します!このクエリは素晴らしい動作します。私はルートタグmysite.com/images/{tag}で "タグ"を渡してから、?category = brownをフィルタに渡すことができます。私はこのようなルートでそれを渡すことができる方法を知っていますか? mysite.com/images/{tag}/{category} – briodev

0

あなたが述べたのと同様の経路を宣言して、ルートに接続されたコントローラメソッドのパラメータとしてそれらを使用することができます。 public function confirm(Request $request, $token1, $token2) {}

+0

素晴らしい作品です!私はそれを成功させずに試みたと思った。ルートバインディングを妨害している可能性があります。または、おそらくパラメータにRequest $ requestがないためです。とにかく、あなたと@MrChrissssに助けてくれてありがとう! 2つの答えの組み合わせが私をそこに連れて来ました。 – briodev