Извлечение данных из базы данных через выпадающий список в таблицу | Laravel

#php #laravel #dropdown

#php #laravel #выпадающий

Вопрос:

Здравствуйте, я новичок в laravel, у меня возникла проблема при получении данных из базы данных через выпадающий список. У меня есть выпадающий список для классов, поэтому, когда пользователь выбирает любой класс и нажимает кнопку отправки, учащиеся, относящиеся к этому классу, будут отображаться ниже в таблице… У меня есть таблица в базе данных для студентов, где идентификатор класса student существует для каждого студента. Я действительно не могу понять логику этой проблемы. Кто-нибудь может мне помочь?

//Мой контроллер

  public function index()
    {
        $classes = StudentsClass::pluck('class_name', 'id')->all();
        $students = Student::all();
        return view('admin.students.attendance.index', compact('classes', 'students'));
    }

    public function mytableAjax($id)

    {

        $students = DB::table("students")

            ->where("student_id",$id)

            ->lists("class_name","id");

        return json_encode($students);

    }
  

//Мой взгляд

         <option value="">--- Select State ---</option>

        @foreach ($classes as $key => $value)

            <option value="{{ $key }}">{{ $value }}</option>

        @endforeach

    </select>

    <table id="studentsData" class="table table-striped table-bordered table-list-search">
        <thead>
            <tr>
                <th>#</th>
                <th>Student ID</th>
                <th>Student Name</th>
                <th>Attendance</th>
            </tr>
        </thead>
            @foreach($students as $student)
        <tbody>
            <tr>
                <th>{{$student->id}}</th>
                <td>{{$student->student_id}}</td>
                <td>{{$student->first_name}} {{$student->last_name}}</td>
                <td>
                    <div class="form-group">
                        <select class="form-control" id="gender">
                            <option>Present</option>
                            <option>Absent</option>
                            <option>Leave</option>
                        </select>
                    </div>
                </td>
            </tr>
        </tbody>
            @endforeach
    </table>
    <a class="fas fa-folder-open btn btn-success float-right mb-4 mr-2"> Save</a>
</div>
  

//ajax

     $(document).ready(function() {

        $('select[name="students_class_id"]').on('change', function() {

            var classID = $(this).val();

            if(classID) {

                $.ajax({

                    url: '/myform/ajax/' classID,

                    type: "GET",

                    dataType: "json",


                    success:function(data) {




                        $('table[id="studentsData"]').empty();

                        $.each(data, function(key, value) {

                            $('table[id="studentsData"]').append('<td   value="'  key  '">'  value  '</td  >');

                        });


                    }

                });

            }

            // else{
            //
            //     $('table[id="studentsData"]').empty();
            //
            // }

        });

    });
  

Это то, что я пробовал

Комментарии:

1. Вам нужно настроить ajax и получать связанных студентов на основе вашего выпадающего списка. Вам нужно показать нам, что вы пробовали, чтобы мы могли направлять вас

2. Хорошо, я попробую что-то еще в ajax, приведенный ниже код…

3. Пожалуйста, прочитайте отредактированный выше вопрос

4. Можете ли вы попробовать dd($students) и проверить вкладку «Сеть» в браузере? Возвращает ли это правильные данные?

5. Без dd ($ students) он выдает мне страницу 200 ok, а с ($ students) теперь он ничего не возвращает

Ответ №1:

Я думаю, что ваш запрос неверен.

 public function mytableAjax($id)
{
    $students = Student::where('class_id', $id)->get();
    // if you try dd($students), you should see it in Network > Preview

    return response()->json(['students => $students]);
}
  

И затем,

 $.ajax({
   url: '/myform/ajax/' classID,
   type: "GET",
   success:function(data) {
      console.log(data.students)
   }
})
  

Комментарии:

1. Нет, я получаю тот же результат, сэр