Я хочу заказать туристические листовки на сколько нравится путешественникам. У меня уже есть листовки и нравится стол. Я просто не знаю, как мне подсчитать флаеров и заказывать их по максимуму, когда на него нажимают тег likew. Как вы можете видеть, у меня уже есть, как счетчик для каждого флаер с пальцы вверх значок Заказать от 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]);
}
Я думаю, вам нужна сводная таблица с полями: user_id, flyer_id – Yurich
им интересно, где ты получаешь симпатии от, beacuse У меня нет этого в моем db – David