如何使用Ajax从数据库获取最后一条记录

时间:2019-08-03 11:53:34

标签: ajax laravel

我正在使用ajax从数据库中获取一些学生数据。而且我在ajax中有单独的标记,以便将该数据显示在表中。现在我想做的是获取最后插入的记录或最上面的记录,但是我不知道该怎么做。我使用sortByDesc()函数,但是在这种情况下不起作用。下面是我的代码。帮助:)

Ajax呼叫

                var classID = $(this).val();
                if (classID) {
                    $.ajax({
                        url: '/attendance/ajax/' + classID,
                        type: "GET",
                        dataType: "json",
                        success: function (data) {
                            var table = $('table[id="studentsData"]');
                            table.DataTable().destroy();
                            var markup = '';
                            markup = '<thead><tr><th style="width: 2%" class="align-middle text-center"><input type="checkbox" id="options"></th><th style="width: 15%" class="text-center">Student ID</th> <th style="width: 15%" class="text-center">Student Name</th> <th style="width: 15%" class="text-center">Attendance</th> <th style="width: 15%" class="text-center">Date</th> <th style="width: 15%;" class="align-middle text-center">Actions</th> </tr></thead><tbody>';
                            $.each(data, function (key, value) {
                                markup += '<tr> <td><input class="checkBoxes" type="checkbox" name="checkBoxArray[]" value="' + value.id + '"></td> <td class="text-center align-middle"><input type="hidden" value="' + value.student_id + '" name="student_id[]">' + value.student_id + '</td> <td class="text-center align-middle"><input type="hidden" value="' + value.first_name + '" name="first_name[]"><input type="hidden" value="' + value.last_name + '" name="last_name[]">' + value.first_name + ' ' + value.last_name + '<td class="text-center align-middle"><input type="hidden" value="' + value.attendance + '" name="attendance[]">' + value.attendance + '</td>' + '<td class="text-center align-middle"><input type="hidden" value="' + value.date + '" name="date[]">' + value.date + '</td>' + '<td style=" width=12%" class="text-center"> <a data-toggle="modal" data-target="#editAttendanceModal' + value.id + '"><button title="Edit" class="btn btn-primary"><span class="fas fa-pencil-alt"></span></button></a>  <a data-toggle="modal" data-target="#deleteAttendanceModal' + value.id + '"><button title="Delete" class="btn btn-danger"><span class="fas fa-trash-alt"></span></button></a> </td>' + '</td> </tr>';
                            });
                            markup += '</tbody>';
                            var table = $('table[id="studentsData"]');
                            table.html(markup);
                            table.DataTable();
                        }
                    });
                }
            });

**Controller**

public function myAttendanceAjax($id) {
        $students_register = StudentsAttendance::where('class_id', $id)->get();
        return json_encode($students_register);
    }

2 个答案:

答案 0 :(得分:1)

您可以使用orderBy('id','desc')-> get();获取最新记录。

答案 1 :(得分:1)

在Illuminate \ Database \ Query \ Builder类中定义了一种方法latest()

public function latest($column = 'created_at')
{
    return $this->orderBy($column, 'desc');
} 

因此,它将与您提供的列按orderBy顺序创建,默认列将被创建。

有关排序的更多信息,请查看https://laravel.com/docs/5.8/queries#ordering-grouping-limit-and-offset