MedicOneSystems / livewire-datatables

Advanced datatables using Laravel, Livewire, Tailwind CSS and Alpine JS
https://livewire-datatables.com/
MIT License
1.2k stars 259 forks source link

Attempt to read property "preventExport" on int #481

Open fmelin opened 2 years ago

fmelin commented 2 years ago

Hello guys, I have the following problem, install livewire according to the indicated steps and when showing a datatable and exporting it throws the following message:

Attempt to read property "preventExport" on int

View:

<livewire:datatable 
                        model="App\Models\User" 
                        name="all-users"
                        exclude="created_at,updated_at,id"                      
                        exportable  
                        complex="true"

    />

Error Detail

  public function getExportResultsSet()

    {

        return $this->mapCallbacks(

            $this->getQuery()->when(count($this->selected), function ($query) {

                return $query->havingRaw('checkbox_attribute IN (' . implode(',', $this->selected) . ')');

            })->get(),

            true

        )->map(function ($item) {

            return collect($this->columns())->reject(function ($value, $key) {

                return $value->preventExport == true || $value->hidden == true;

            })->mapWithKeys(function ($value, $key) use ($item) {

                return [$value->label ?? $value->name => $item->{$value->name}];

            })->all();

        });

    }

more detail

https://flareapp.io/share/OmVDER87

greetings and thank you very much

gnumarquez commented 2 years ago

Did you manage to solve it? I have the same problem

rickmills commented 2 years ago

Looks like this is broken in the latest release. Although seems to be deeper than just the export as if you manually comment out those references it goes on to error out with issues in the hidden and name columns too.

krlenix commented 2 years ago

Same problem...

han220805 commented 2 years ago

I have same problem when using <livewire:datatables ..... />

my solution is creating datatable component first and load it into view.

Miftahulhud2 commented 2 years ago

i have same problem when using the data for another user but if dd all data i get

yogendrakinja commented 1 year ago

Found the solution

public function getExportResultsSet() { return $this->mapCallbacks( $this->getQuery()->when(count($this->selected), function ($query) { return $query->havingRaw('checkbox_attribute IN (' . implode(',', $this->selected) . ')'); })->get(), true )->map(function ($item) { return collect($this->columns)->reject(function ($value, $key) { return $value['preventExport'] == true || $value['hidden'] == true; })->mapWithKeys(function ($value, $key) use ($item) { return [$value['label'] ?? $value['name'] => $item->{$value['name']}]; })->all(); }); }