我需要允许用户按照Laravel中列的特定值进行排序。在SQL中,我可以实现这一点
order by column = 5
但是默认的Laravel orderBy函数似乎不支持这个。
我找到了orderByRaw函数并且可以通过它完成它,但由于我除了用户输入的值之外,我担心SQL注入的可能性。
该值是相关表的ID,因此我可以在模型上运行查找并从返回的模型中检索ID,这样用户的输入就不会直接添加到查询中。 e.g:
$role = Role::find($userInputValue);
$query->orderByRaw('role_id = ' . $role->id . ' desc');
有没有更简单的方法来实现这一目标?
答案 0 :(得分:7)
从未通过语法听说过这个顺序,但你可以在原始查询中转义:(/ p>)
$query->orderByRaw('role_id = ? desc',[$role->id]);