我在laravel
中遇到了一个问题,无法返回json
数据并将它们排序,它们只是随机出现。
我迄今为止所做的事情
我尝试通过从数据库中按
id
返回数据,并借助JavaScript排序,例如:result.sort(function(a,b) { return (a.id > b.id) ? 1 : ((b.id > a.id) ? -1 : 0); });
结果是随机排序的我向我的数据库添加了
sort
列,并尝试根据我提供的数字获取我的数据(结果是随机排序的)我尝试在我的函数代码中添加
->orderByRaw('set_specification.sort')
来获取该顺序(结果是随机排序的)
逻辑
- 我选择一个
set
Set
子项将按照我在其中提供数字的sort
列顺序显示在blade上。
代码
控制器
public function selectset($id){
$selectsets = DB::table('sets')
->where('sets.id', '=', $id)
->join('set_specification', 'sets.id', '=', 'set_specification.set_id')
->join('specifications', 'set_specification.spec_id', '=', 'specifications.id')
->orderByRaw('set_specification.sort')
->get();
return response()->json($selectsets);
}
JavaScript
$(document).ready(function() {
$('select[name="selectset"]').on('change', function() {
var id = $(this).val();
if(id) {
$.ajax({
url: '{{ url('admin/selectset') }}/'+encodeURI(id),
type: "GET",
dataType: "json",
success:function(result) {
result.sort(function(a,b) {
return (a.id > b.id) ? 1 : ((b.id > a.id) ? -1 : 0);
});
console.log(result);
//rest of code..
}
问题
即使在我的代码中通过ajax方式返回正确的数据(正如您在我的代码中所看到的),控制台也会返回正确结果,但在blade中它并未按照预期显示!
如果上面的图片无法工作,则请再次查看此处
问题
- 我该如何解决这个排序问题?
更新
我将AJAX代码更改为:
result.sort(function(a,b) {
return (a.sort > b.sort) ? 1 : ((b.sort > a.sort) ? -1 : 0);
});
结果相同,截图如上。
sort
列的类型是什么?我猜它不是整数。如果你按id
排序,你需要指定表格,因为你正在连接多个不同的表格。 - fubarid
排序的,而代码表明OP想按sort
排序,这似乎是一个string
,而不是一个int
。 - fubar