Лучший способ достичь этого - иметь отношения один-ко-многим с App\Classes
.
Однако, так как у вас уже есть что-то и работает, я, вероятно, сделал бы это так
Во-первых, я бы преобразовал admission_classes
в массив. Это гарантирует, что admission_classes всегда будет приводиться к массиву всякий раз, когда он выбирается. Нам легче с ним работать.
protected $casts = [
'admission_classes' => 'array'
];
Наконец, при извлечении ваших записей о поступлении вам также необходимо нанести на карту карту и гидрировать Classes
из его идентификаторов. Вот как я бы попытался этого добиться.
$admissions = Admission::where('school_id',$school_id)
->orderBy('id','desc')
->paginate(10)
->map(function($admission) {
return array_map(function($class) {
$class = Classes::find($class);
return isset($class) ? $class->name : '';
}, $admission->admission_classes);
});
Вы заметите, что я обернул метод Classes::find()
в помощник optional()
. Это потому, что в случае, если запись не найдена, она не подведет.
Наконец, чтобы напечатать имена ваших классов в вашем блейде, вы должны сделать что-то вроде этого:
implode(',', $admission->admission_classes);