2016-02-08 1 views
0

Я хочу заказать туристические листовки на сколько нравится путешественникам. У меня уже есть листовки и нравится стол. Я просто не знаю, как мне подсчитать флаеров и заказывать их по максимуму, когда на него нажимают тег likew. Как вы можете видеть, у меня уже есть, как счетчик для каждого флаер с пальцы вверх значок enter image description hereЗаказать от Flyer Likes Laravel 5.2

Флайерз таблице:

Schema::create('flyers', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id')->unsigned(); 
      $table->string('title'); 
      $table->string('excerpt'); 
      $table->text('description'); 
      $table->timestamps(); 
}); 

Симпатичный стол:

(«likeable_id» является флаеры id, а «likeable_type» - из какой модели, например, если человеку понравился флаер, это будет App \ Flyer, или если человеку понравилось изображение, это будет App \ Image)

Schema::create('likeable', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id'); 
      $table->integer('likeable_id'); 
      $table->string('likeable_type'); 
      $table->timestamps(); 
}); 

Это OrderByController.php

Как вы можете видеть у меня уже есть заказ по дате возрастанию и DESC

class OrderByController extends TravelFlyersController { 

    /** 
    * @param Flyer $flyer 
    * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View 
    */ 
    public function travelDateAsc(Flyer $flyer) 
    { 
     $flyer = Flyer::orderBy('created_at', 'asc')->paginate(15); 

     return view('travelflyers.index', ['flyer' => $flyer]); 
    } 


    /** 
    * @param Flyer $flyer 
    * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View 
    */ 
    public function travelDateDesc(Flyer $flyer) 
    { 
     $flyer = Flyer::orderBy('created_at', 'desc')->paginate(15); 

     return view('travelflyers.index', ['flyer' => $flyer]); 
    } 


    public function flyerLikes(Like $like) 
    { 
     // DONT KNOW HOW TO COUNT THE FLYERS HERE NEED HELP HERE 
     // MAYBE SOMETHING LIKE THIS, (that does not work though) 

     $flyer = Flyer::findOrFail($id); 

     $flyers = Like::orderBy('likeable_id')->where('likeable_id', '=',  $flyer); 
     return view('travelflyers.index', ['flyers' => $flyers]); 
    } 


} 

Маршруты:

Route::get('travelflyers/date/asc', [ 
     'uses' => '\App\Http\Controllers\[email protected]', 
     'as' => 'travelflyers.asc', 
    ]); 


    Route::get('travelflyers/date/desc', [ 
     'uses' => '\App\Http\Controllers\[email protected]', 
     'as' => 'travelflyers.desc', 
    ]); 



    Route::get('travelflyers/likes', [ 
     'uses' => '\App\Http\Controllers\[email protected]', 
     'as' => 'travelflyers.likes', 
    ]); 

И лезвие:

    <a href="{{ route('travelflyers.desc') }}" class="ui green large label"> 
        Newest 
       </a> 
       <a href="{{ route('travelflyers.asc') }}" class="ui orange large label"> 
        Oldest 
       </a> 


       <a href="{{ route('travelflyers.likes') }}" class="ui orange large label"> 
        Likes 
       </a> 

/**** ******** EDIT/

public function flyerLikes(Flyer $flyer) { 

     $flyer = Flyer::has('likeable', '>=', 1) 
      ->select(DB::raw('id, count(likeable_id) as likes, user_id')) 
      ->groupBy('user_id') 
      ->orderBy('likes', 'desc') 
      ->get(); 


     return view('travelflyers.index', ['flyer' => $flyer]); 
} 
+0

Я думаю, вам нужна сводная таблица с полями: user_id, flyer_id – Yurich

+0

им интересно, где ты получаешь симпатии от, beacuse У меня нет этого в моем db – David

ответ

0

Я могу ошибиться, но это что-то вроде

- Редактировал -

$flyers = Flier::has('flyers', '>=', 1) 
     ->select(\DB::raw('flyers.id, count(flyers.id) as likes, users.id')) 
     ->join('likeable', 'users.id', '=', 'likeable.user_id') 
     ->join('flyers', 'likeable.flier_id', '=', 'flyers.id') 
     ->groupBy('users.id') 
     ->orderBy('likes', 'desc') 
     ->get(); 
+0

Я отредактировал свое сообщение, посмотрев на самое дно, то есть waht у меня есть для моей функции, но когда я нажимаю кнопку понравится, я получаю ошибку * * Нет результатов запроса для модели [App \ Flyer] ** – David

+0

Я переключил свой маршрут на travelflyers/most/нравится, и я получаю thos-ошибку ** Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: likeable_id() ** – David

+0

Подождите, я проверю его. – Yurich