Datatable Laravel make (правда) - PullRequest
0 голосов
/ 27 марта 2020

Я использую DataTable для отображения данных.

Я не знаю make метод. Как это работает?

Я использую опцию addColumn, чтобы добавить кнопку Action, и make(true) не работает, но make(false) в порядке!?.

Контроллер

$business_id = request()->session()->get('user.business_id');

            $locations = BusinessLocation::where('business_locations.business_id', $business_id)
                ->with('bCountry')
                ->with('bState')
                ->with('bCity')
                ->with('bWard')
                ->leftjoin(
                    'invoice_schemes as ic',
                    'business_locations.invoice_scheme_id',
                    '=',
                    'ic.id'
                )
                ->leftjoin(
                    'invoice_layouts as il',
                    'business_locations.invoice_layout_id',
                    '=',
                    'il.id'
                )
                ->select('business_locations.name', 'location_id', 'landmark', 'ward', 'city',
                    'zip_code', 'state',
                    'country', 'business_locations.id', 'ic.name as invoice_scheme', 'il.name as invoice_layout');

            $permitted_locations = auth()->user()->permitted_locations();
            if ($permitted_locations != 'all') {
                $locations->whereIn('business_locations.id', $permitted_locations);
            }

            return Datatables::of($locations)
                ->addColumn(
                    'action',
                    '<button type="button" data-href="{{action(\'BusinessLocationController@edit\', [$id])}}" 
                        class="btn btn-xs btn-primary btn-modal" data-container=".location_edit_modal">
                        <i class="glyphicon glyphicon-edit"></i> @lang("messages.edit")</button>

                    <a href="{{route(\'location.settings\', [$id])}}" class="btn btn-success btn-xs">
                        <i class="fa fa-wrench"></i> @lang("messages.settings")</a>
                    ')
                ->editColumn('country', function ($locations) {
                    return $locations['bCountry']['name'];
                })
                ->editColumn('state', function ($locations) {
                    return $locations['bState']['name'];
                })
                ->editColumn('city', function ($locations) {
                    return $locations['bCity']['name'];
                })
                ->editColumn('ward', function ($locations) {
                    return $locations['bWard']['name'];
                })
                ->removeColumn('id')
                ->rawColumns(['10'])
                ->make(false);

JS

var business_locations = $('#business_location_table').DataTable({
        processing: true,
        serverSide: true,
        bPaginate: false,
        buttons: [],
        ajax: '/business-location',
        // column: [
        //     { data: 'country' },
        //     { data: 'state' },
        //     { data: 'city' },
        //     { data: 'ward' },
        //     { data: 'action' },
        // ],
        columnDefs: [
            {
                targets: 10,
                orderable: false,
                searchable: false,
            },
        ],
    });

Когда я создаю связь, но в поле Action возникает ошибка [Object Object].

enter image description here

Когда нет отношений, все работало нормально!

enter image description here

Есть какие-нибудь решения? Большое спасибо!

1 Ответ

0 голосов
/ 27 марта 2020

Попробуйте один раз.

        return Datatables::of($locations)

            ->addColumn('action', function ($locations){


                $return_data.='<button type="button" data-href="{{action(\'BusinessLocationController@edit\', [$id])}}" 
                    class="btn btn-xs btn-primary btn-modal" data-container=".location_edit_modal">
                    <i class="glyphicon glyphicon-edit"></i> @lang("messages.edit")</button>

                <a href="{{route(\'location.settings\', [$id])}}" class="btn btn-success btn-xs">
                    <i class="fa fa-wrench"></i> @lang("messages.settings")</a>
                ';

                return $return_data;
            })
            ->editColumn('country', function ($locations) {
                return $locations['bCountry']['name'];
            })
            ->editColumn('state', function ($locations) {
                return $locations['bState']['name'];
            })
            ->editColumn('city', function ($locations) {
                return $locations['bCity']['name'];
            })
            ->editColumn('ward', function ($locations) {
                return $locations['bWard']['name'];
            })
            ->removeColumn('id')
            ->rawColumns(['10','action'])//here you need to specified action
            ->make(true);
...