eloquent($query)->with('category') ->addColumn('action', function ($data) { return view('product::products.partials.actions', compact('data')); }) ->addColumn('product_image', function ($data) { $url = $data->getFirstMediaUrl('images', 'thumb'); return ''; }) ->addColumn('product_price', function ($data) { return format_currency($data->product_price); }) ->addColumn('product_cost', function ($data) { return format_currency($data->product_cost); }) ->addColumn('product_quantity', function ($data) { return $data->product_quantity . ' ' . $data->product_unit; }) ->rawColumns(['product_image']); } public function query(Product $model) { return $model->newQuery()->with('category'); } public function html() { return $this->builder() ->setTableId('product-table') ->columns($this->getColumns()) ->minifiedAjax() ->dom("<'row'<'col-md-3'l><'col-md-5 mb-2'B><'col-md-4'f>> . 'tr' . <'row'<'col-md-5'i><'col-md-7 mt-2'p>>") ->orderBy(7) ->buttons( Button::make('excel') ->text(' Excel'), Button::make('print') ->text(' Print'), Button::make('reset') ->text(' Reset'), Button::make('reload') ->text(' Reload') ); } protected function getColumns() { return [ Column::computed('product_image') ->title('Image') ->className('text-center align-middle'), Column::make('category.category_name') ->title('Category') ->className('text-center align-middle'), Column::make('product_code') ->title('Code') ->className('text-center align-middle'), Column::make('product_name') ->title('Name') ->className('text-center align-middle'), Column::computed('product_cost') ->title('Cost') ->className('text-center align-middle'), Column::computed('product_price') ->title('Price') ->className('text-center align-middle'), Column::computed('product_quantity') ->title('Quantity') ->className('text-center align-middle'), Column::computed('action') ->exportable(false) ->printable(false) ->className('text-center align-middle'), Column::make('created_at') ->visible(false) ]; } /** * Get filename for export. * * @return string */ protected function filename(): string { return 'Product_' . date('YmdHis'); } }