2017-08-25 7 views
0

私は自分のサイトにタグシステムを持っており、タグをクリックすると、そのタグに関連付けられているアイテムに関連付けられたリストが表示されます。私はこれらのアイテム(バットマン)を、それらをレビューしたユーザーから与えられた最も高い平均「評価」スコアで注文したいので、タグに関連付けられた最高評価のバットマンが最初に表示されます。どうすればいい?タグシステムで注文する

マイテーブル:

打者:ID、名前、COUNTRY_ID、レビュー:ID、評価、コメント、Batsmen_idタグ:ID、タグ名Batsmen_tag(多くのテーブルに多くの):batsmen_id、TAG_ID

現在、私私のタグコントローラのタグ($ id)をすべて見つけて、そのタグに関連するバッツマンを返すために関係を持つforeachを使用しています。

打者に戻しますと、HTML現在TagControllerコード:コントローラ:

public function show($id) 
    { // $tag = Tag::find($id); 

return view('tags.show')->withTag($tag); 
} 

は、HTML:

@foreach($tag->batsmen as $tags) 

@endforeach 

これは私がタグに関連していないbatsmensを取り戻すとどのように私はそれらを注文しています方法です最高AVG:

$Batsmen = Batsmen::where('approved', '=', 1) 
->leftJoin('reviews', 'reviews.batsmen_id', '=', 'batsmen.id') 
->select('batsmen.*', DB::raw('AVG(ratings) as ratings_average')) 
->groupBy('id') 
->orderBy('ratings_average', 'DESC') 
->get(); 

どのように私は2つを組み込み、バットマンrタグに訴えて、最高の平均でそれらを注文する?

答えて

2

あなたは可能性が熱心な負荷コントローラ内で打者:

$tag = Tag::with(['batsmen' => function ($query) { 
    return $query->where('approved', '=', 1) 
      ->leftJoin('reviews', 'reviews.batsmen_id', '=', 'batsmen.id') 
      ->select('batsmen.*', DB::raw('AVG(ratings) as ratings_average')) 
      ->groupBy('id') 
      ->orderBy('ratings_average', 'DESC'); 
}])->where('id', $id)->first(); 
+0

これは任意のアイデアによる注文後構文エラーで戻ってきますか? – dionarap

+0

@dionarapセミコロンを追加してください。悪い;) – Ohgodwhy

+0

abouts man?自分自身でエラーが表示されない場合もあります。 – dionarap

関連する問題