如何按照Laravel中的特定值进行排序?

Har*_*oyd 2 php sorting laravel laravel-5.1

我需要允许用户按照Laravel中列的特定值进行排序.在SQL中,我可以实现这一点, order by column = 5 但默认的Laravel orderBy函数似乎不支持这一点.

我找到了orderByRaw函数并且可以通过它完成它,但由于我除了用户输入的值之外,我担心SQL注入的可能性.

该值是相关表的ID,因此我可以在模型上运行查找并从返回的模型中检索ID,这样用户的输入就不会直接添加到查询中.例如:

$role = Role::find($userInputValue);
$query->orderByRaw('role_id = ' . $role->id . ' desc');
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来实现这一目标?

Jef*_*eff 7

从来没有通过语法听说过这个顺序,但你可以在原始查询中逃避这样的事情:

$query->orderByRaw('role_id = ? desc',[$role->id]);
Run Code Online (Sandbox Code Playgroud)