从Laravel中的ID获取正确的值

时间:2019-05-05 15:11:22

标签: laravel

我在从id中获取实际值时遇到问题。我无法理解该问题,因为在存储这些值时,我在一个下拉列表中使用Ajax获取了这些值,并在其中存储了来自下拉列表的ID。但是,当我尝试取回这些值时,它将向我显示这些ID,而不是实际值。我不明白如何从这些ID中获取实际值。我还把它们放在控制器的索引方法中,但这是行不通的,因为它是Ajax。以下是我的代码,如果您想了解更多有关此信息,请告诉我。

用于创建表单的控制器操作。

public function create()
{
    $classes = StudentsClass::pluck('class_name', 'id')->all();
    $rep_cat = ReportCtegories::pluck('name', 'id')->all();

    return view('admin.reports.create', compact('classes', 'rep_cat'));
}

public function getStudentId($id)
{
    $students = DB::table("students")->where("students_class_id", $id)->pluck("student_id", "id");

    return json_encode($students);
}

public function getStudentName($id)
{
    $students = DB::table("students")->select("id", DB::raw("CONCAT(first_name, ' ', last_name) as name"))
        ->where("students_class_id", $id)->pluck("name", "id");

    return json_encode($students);
}

使用Ajax获取值。

<script>

        $(document).ready(function () {

            //FOR LOADING STUDENTS
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });

            $('select[name="class_id"]').on('change', function () {
                var classID = $(this).val();
                if (classID) {

                    $.ajax({

                        url: '/reports/ajax/' + classID,
                        type: "GET",
                        dataType: "json",
                        success: function (data) {

                            var markup = '';
                            markup = '<thead><tr class="filters"><th style="width: 2%" class="align-middle text-center"><input type="checkbox" id="options"></th><th style="width: 15%" class="text-center">Student ID<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Student Name<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Report Category<input type="text" class="form-control" disabled></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><input type="hidden" value="' + value.student_id + '" name="student_id[]">' + value.student_id + '</td> <td><input type="hidden" value="' + value.student_name + '" name="student_name[]">' + value.student_name + '<td><input type="hidden" value="' + value.report_categories_id + '" name="report_categories_id[]">' + value.report_categories_id + '</td>' +  '<td style=" width=12%" class="text-center"> <a data-toggle="modal" data-target="#editAttendanceModal' + value.id + '"""><button title="Edit" class="btn btn-outline-primary"><span class="fas fa-pencil-alt"></span></button></a> </td>' + '</td> <tr>';

                            });
                            markup += '</tbody>';
                            $('table[id="studentsData"]').html(markup);
                        }
                    });
                }

            });
        });

    </script>

1 个答案:

答案 0 :(得分:0)

首先,我建议您使用

return response()->json($students)

第二次获取仅返回一个id数组(在您的情况下)

我想你可以尝试一下。

public function getStudentId($id)
{
    $students = DB::table("students")->where("students_class_id", $id)->get();
    return response()->json($students);
}