美好的一天,
我需要在laravel中使用“orderBy”函数对结果进行排序,但不幸的是我想要使用的那列中的值在实际数字之前有“j1_”。所以我想首先删除前3个字符但是我试过的时候
orderBy(substr('x_fs_format_details.tree_xid', 3))
它给我一个“未找到列”错误。
有没有办法调整这个?感谢。
答案 0 :(得分:3)
我假设您使用MYSQL(其他数据库的子字符串函数可能不同)
您可以动态制作新字段:
$query->selectRaw('*, SUBSTR(x_fs_format_details.tree_xid, 3) AS substr_tree_xid')
->orderBy('substr_tree_xid')->get();
这样做的优点/缺点是SUBSTR
的结果将出现在您的结果中。如果您不想要,也可以直接在订单中使用SUBSTR
:
$query->orderByRaw('SUBSTR(x_fs_format_details.tree_xid, 3)')->get();