#php #laravel #datatables
#php #laravel #таблицы данных
Вопрос:
Я использую таблицы данных из таблиц данных yajra, и у меня проблема.
У меня есть таблица данных, в которой я получаю определенные столбцы из других таблиц, например, столбец «customer» получается через отношение из другой таблицы
Но когда я нажимаю кнопку сортировки по клиенту, идентификаторы меняются на идентификатор таблицы, к которой принадлежит отношение
Это приводит к ошибкам в кнопках, которые у меня справа, поскольку эти идентификаторы не существуют в таблице «meos», только в таблице «locations», которая находится в отношении
Как я могу выполнить сортировку, сохранив тот же идентификатор, который у него был?
Я хочу всегда сохранять в качестве критерия порядка идентификатор таблицы, с которой я работаю, которая является таблицей «meos», принадлежащей классу «meo»
Это мой запрос
public function query()
{
$languageId = Auth::user()->language_id;
return Meo::with(['businessType' => function ($query) use ($languageId) {
$query->with(['businessTypeDescriptions' => function ($subQuery) use ($languageId) {
$subQuery->where('language_id', '=', $languageId);
}]);
}])->with('location');
}
это моя функция getcolumns
protected function getColumns()
{
return [
Column::make('id')->addClass('text-center')->title(__('digestReport.columns.id')),
Column::make('location.location_name')->addClass('text-center')->title(__('digestReport.columns.customer')),
Column::make('businessType')->addClass('text-center')->title(__('digestReport.columns.business_type'))->searchable(false),
Column::computed('action')->exportable(false)->printable(false)->width(160)->addClass('text-center')->title(__('digestReport.columns.actions')),
];
}
пожалуйста, мне нужна помощь.
Спасибо 🙂
Ответ №1:
Попробуйте приведенный ниже код. Добавить ->select()
инструкцию
public function query()
{
$languageId = Auth::user()->language_id;
return Meo::with(['businessType' => function ($query) use ($languageId) {
$query->with(['businessTypeDescriptions' => function ($subQuery) use ($languageId) {
$subQuery->where('language_id', '=', $languageId);
}]);
}])->with('location')->select('meo-table.*');
}
meo-table
Замените таблицу базы данных для Meo::class
Комментарии:
1. спасибо за ваш ответ, но этот «-> выбрать» выбирает только столбцы внутри таблицы местоположений
2. я использовал yajra datatable с отношениями, и если я сортирую по столбцу отношения, я большую часть времени получаю ошибку, потому что идентификатор становится неоднозначным для datatable. использование оператора select решает проблему для меня.
3. хорошо, я добавил «-> select (‘id’);» но теперь я получаю другую ошибку «попытка получить свойство » businessstypedescriptions» не-объекта «, и если я его удалю, оно снова заработает
4. вам нужно было добавить свой основной
tablename.*
примерUser::with('posts')->select('users.*')