query(User::query()) ->groups(fn () => [ Tables\Grouping\Group::make('name'), Tables\Grouping\Group::make('profile.bio'), Tables\Grouping\Group::make('profile.company.name'), Tables\Grouping\Group::make('profile.setting.theme'), Tables\Grouping\Group::make('image.url'), Tables\Grouping\Group::make('setting.theme'), Tables\Grouping\Group::make('setting.language.name'), Tables\Grouping\Group::make('setting.languageWithTrashed.name'), Tables\Grouping\Group::make('company.name'), Tables\Grouping\Group::make('publishedPost.title'), ]) ->columns([ Tables\Columns\TextColumn::make('name') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('email') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('profile.bio') ->label('Profile Bio') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('profile.company.name') ->label('Company') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('profile.setting.theme') ->label('Theme') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('profile.setting.language') ->label('Language') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('image.url') ->label('Image URL') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('setting.theme') ->label('Setting Theme (HasOneThrough)') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('setting.language') ->label('Setting Language (HasOneThrough)') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('setting.language.name') ->label('Setting Language Name (HasOneThrough -> BelongsTo)') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('setting.languageWithTrashed.name') ->label('Setting Language With Trashed (HasOneThrough -> BelongsTo with withTrashed)') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('company.name') ->label('Company (BelongsToThrough)') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('publishedPost.title') ->label('Published Post Title (HasOne with where())') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('posts_count') ->counts('posts'), ]); } public function render(): View { return view('livewire.table'); } }