Я пытаюсь выяснить, как получить все предметы определенного года с помощью ajax, jquery в Laravel.
У меня есть три таблицы в базе данных:
years: id, name
subjects: id, name
year_subject: id, year_id , subject_id
Вот модели:
Year.php
Subject.php
YearSubject.php
Вот функция в контроллере
public function get_subjects($id)
{
$sub = YearSubject::where("year_id", $id)->pluck("subject_id");
$subjects=Subject::where('$id',$sub)->pluck('name','id');
foreach($sub as $s)
{
$subjects= Subject::where('$id',$s)->pluck('name','id');
}
return json_encode($subjects);
}
<script type="text/javascript">
$(document).ready(function () {
$('#grade').on('change', function () {
var gradeID = $(this).val();
$('#subject').empty();
if (gradeID) {
$.ajax({
url: '{{url('get_subjects')}}' + '/' + gradeID,
type: "GET",
dataType: "json",
success: function (data) {
$.each(data, function (key, value) {
$('#subject').append('<option value="' + key + '">' + value + '</option>');
});
}
});
} else {
$('#subject').empty();
}
});
});
</script>
<select id="grade" name="grade" required>
<option value="" disabled selected> Choose Year</option>
@foreach($grades as $grade)
<option value="{{$grade->id}}">{{$grade->name}}</option>
@endforeach
</select>
<select name="subject" id="subject" >
<option value="">Choose Subject </option>
</select>
Вот маршрут
Route::get('get_subjects/{id}', 'SubjectController@get_subjects')->name('get_subjects');
Я думаю, ошибка в контроллере. Не могу понять, как выдвинуть значения в $ subject.