laravel框架orderBy问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel框架orderBy问题相关的知识,希望对你有一定的参考价值。
orderBy('list','asc').
我想让该列值等于3的排在最前面,怎么做。在线等老哥
用orderByRaw 来实现
->orderByRaw(\\DB::raw("FIELD(字段, 3)")最后得到的sql就会是
select * from 表 where 条件 order by FIELD(字段,3)
追问$noticeObj = $object->orderByRaw(\DB::raw("FIELD(status,3)");
报错这样 编辑器都通不过的 用的Illuminate\Database\Eloquent\Model
Laravel:orderBy喜欢计数
【中文标题】Laravel:orderBy喜欢计数【英文标题】:Laravel: orderBy like count 【发布时间】:2018-10-04 00:01:52 【问题描述】:在我的网站上,注册用户可以创建帖子并喜欢其他人的帖子。当显示所有帖子时,我有选项,用户可以按标题、日期和喜欢计数排序。我已经完成了标题和日期,但我无法按喜欢计数排序。在我的系统中实现此功能的最佳方式是什么。
这是我用于检索和排序帖子的帖子控制器方法:
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]);
这是我的观点,用户可以选择订购什么:
<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>
【问题讨论】:
您目前如何跟踪likes
?每个like
是否在另一个表中获得记录?您在此表上是否有类似 num_ikes
的列?
每个赞都会在赞表中获得一条记录。 likes 表包含 id、Post_id(外键)和 user_id(外键)@PatrickMoore
【参考方案1】:
使用这个:
$posts = Post::withCount('likes')->orderByDesc('likes_count')->get();
这需要Post
模型中的likes
关系:
public function likes()
return $this->hasMany(Like::class);
【讨论】:
只要 OP 有关系就可以工作,很好!以上是关于laravel框架orderBy问题的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 - 多维 groupBy、orderBy 和 paginate