#php #laravel #eloquent #datatables #yajra-datatable
#php #laravel #красноречивый #таблицы данных #яджра-поддающийся обработке
Вопрос:
Я пытаюсь отсортировать столбец с именем agency_name. Но это не работает. Full_name отлично работает, в то время как столбец agency_name не работает. Итак, в основном я пытаюсь получить доступ к данным, которые находятся в таблице user_work_experiences, поэтому я получаю к ним доступ через таблицу user и получаю текущий пользовательский опыт работы. Я использую пакет yajra / datatables. Итак, здесь моя структура таблицы выглядит: —
Студенческие общежития
- user_id
Пользователи:
- ID
Опыт работы с пользователями
- user_id
- agency_name
Вот пример кода:
Контроллер:
public function getHostels()
{
$hostels = StudentHostel::with('user', 'user.userProfile', 'user.currentWorkExperience', 'status')->limit(100)->select('student_hostels.*');
return Datatables::of($hostels)
->addIndexColumn()
->editColumn('user.full_name', function (StudentHostel $hostel) {
return $hostel->user->full_name;
})
->editColumn('user.userProfile.address_1', function(StudentHostel $hostel) {
return $hostel->user->userProfile ? $hostel->user->userProfile->address_1 . " " . $hostel->user->userProfile->address_2 : null;
})
->addColumn('action', 'backEnd.hostel.datatables_action')
->orderColumn('user.full_name', function ($query, $order) {
$query->whereHas('user', function ($q) use($order) {
$q->orderBy('full_name', $order);
});
})
->orderColumn('user.current_work_experience.agency_name', function ($query, $order) {
$query->whereHas('user', function ($q) use ($order) {
$q->whereHas('currentWorkExperience', function ($q) use ($order) {
$q->orderBy('agency_name', $order);
});
});
})
->orderByNullsLast()
->make(true);
}
Число просмотров:
$('#hostel_datatable').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('hostel.application.list') }}",
columns: [
{data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false},
{data: 'user.full_name', name: 'user.full_name'},
{data: 'user.current_work_experience.agency_name', name: 'user.current_work_experience.agency_name'},
{data: 'user.userProfile.address_1', name: 'user.userProfile.address_1', orderable: false, searchable: false},
{data: 'status.base_setup_name', name: 'status.base_setup_name', orderable: false, searchable: false},
{
data: 'action',
name: 'action',
orderable: true,
searchable: true
},
]
});
Я надеюсь, что вы, ребята, сможете мне помочь. Большое вам спасибо 🙂
Комментарии:
1. Уже получил ответ? Та же проблема!
2. @NickAudenaerde пока нет. Я перехожу к использованию базовой разбивки на страницы. Я думаю, что для таблиц данных лучше использовать query builder вместо eloquent