KB_*_*yan 0 html php laravel eloquent
在我的网站上,注册用户可以创建帖子并喜欢其他人的帖子。在显示所有帖子时,我可以选择用户可以按标题、日期和喜欢计数排序。我已经完成了标题和日期,但我在按喜欢计数排序时遇到了麻烦。在我的系统中实现此功能的最佳方法是什么。
这是我用于检索和排序帖子的帖子控制器方法:
public function getEvents(Request $request){
if($request['sort'] == "created_at"){
$posts = Post::orderBy('created_at', 'desc')->get();
}
elseif($request['sort'] == "title"){
$posts = Post::orderBy('title', 'desc')->get();
}
elseif($request['sort'] == "like"){
//how would I go about ordering by like count here
}
return view ('eventspage', ['posts' => $posts]);
}
Run Code Online (Sandbox Code Playgroud)
这是我的用户选择订购内容的视图:
<form action="{{ route('events') }}">
<select name="sort" onchange="this.form.submit()" class="form-control">
<option value="">Sort By</option>
<option value="created_at">Date</option>
<option value="title">Title</option>
<option value="like">Likes</option>
<input type="hidden" name="formName" value="sort">
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
用这个:
$posts = Post::withCount('likes')->orderByDesc('likes_count')->get();
Run Code Online (Sandbox Code Playgroud)
这需要模型中的likes关系Post:
public function likes() {
return $this->hasMany(Like::class);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |