gpt4 book ai didi

javascript - 按传单喜欢 Laravel 5.2 订购

转载 作者:行者123 更新时间:2023-11-29 21:30:52 25 4
gpt4 key购买 nike

我想根据旅行传单的点赞数来订购旅行传单。我已经有了传单和点赞表。我只是不知道当点击 likwe 标签时,如何计算喜欢的传单并按最高顺序排序。正如你所看到的,我已经为每个传单设置了一个带有“竖起大拇指”图标的“点赞”计数器 enter image description here

传单表:

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,或者如果一个人喜欢图像,它会是应用程序\图像)

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

如您所见,我已经按日期 asc 和 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\OrderByController@travelDateAsc',
'as' => 'travelflyers.asc',
]);


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



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

还有 Blade :

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

/**** 编辑********/

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]);
}

最佳答案

我可能会犯错误,但那是某种错误

--已编辑--

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

关于javascript - 按传单喜欢 Laravel 5.2 订购,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35277697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com