Missing namings on using panel in table builder
public function table(Table $table): Table
{
return $table
->query(
Booking::query()
->with('travelers')
->whereHas('product.contract', function ($query) {
$query->where('hotel_id', auth()->user()->id);
})
)
->columns([
TextColumn::make('booking_number')
->label(__('Booking Number')),
TextColumn::make('starts_at')
->label(__('Start'))
->date(),
TextColumn::make('ends_at')
->label(__('End'))
->date(),
TextColumn::make('room.name')
->label(__('Room')),
Panel::make([
Stack::make([
TextColumn::make('travelers')
->label(__('Travelers'))
->icon('heroicon-m-user-group')
->formatStateUsing(function ($record) {
return $record->travelers->map(function ($traveler) {
$bornAt = $traveler->born_at ? sprintf(' (%s)', $traveler->born_at->format('d.m.Y')) : '';
return $traveler->name.$bornAt;
})->join(', ');
}),
]),
])->collapsible(),
])
->filters([
Filter::make('date_range')
->form([
DatePicker::make('starts_from')
->label(__('From')),
DatePicker::make('starts_until')
->label(__('To')),
])
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['starts_from'],
fn (Builder $query, $date): Builder => $query->whereDate('starts_at', '>=', $date),
)
->when(
$data['starts_until'],
fn (Builder $query, $date): Builder => $query->whereDate('starts_at', '<=', $date),
);
}),
])
->emptyStateHeading(__('No Bookings'));
}
public function table(Table $table): Table
{
return $table
->query(
Booking::query()
->with('travelers')
->whereHas('product.contract', function ($query) {
$query->where('hotel_id', auth()->user()->id);
})
)
->columns([
TextColumn::make('booking_number')
->label(__('Booking Number')),
TextColumn::make('starts_at')
->label(__('Start'))
->date(),
TextColumn::make('ends_at')
->label(__('End'))
->date(),
TextColumn::make('room.name')
->label(__('Room')),
Panel::make([
Stack::make([
TextColumn::make('travelers')
->label(__('Travelers'))
->icon('heroicon-m-user-group')
->formatStateUsing(function ($record) {
return $record->travelers->map(function ($traveler) {
$bornAt = $traveler->born_at ? sprintf(' (%s)', $traveler->born_at->format('d.m.Y')) : '';
return $traveler->name.$bornAt;
})->join(', ');
}),
]),
])->collapsible(),
])
->filters([
Filter::make('date_range')
->form([
DatePicker::make('starts_from')
->label(__('From')),
DatePicker::make('starts_until')
->label(__('To')),
])
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['starts_from'],
fn (Builder $query, $date): Builder => $query->whereDate('starts_at', '>=', $date),
)
->when(
$data['starts_until'],
fn (Builder $query, $date): Builder => $query->whereDate('starts_at', '<=', $date),
);
}),
])
->emptyStateHeading(__('No Bookings'));
}

Solution:Jump to solution
This is expected because Split, Stack, ... remove the classic table layout and therefore there are no headers anymore.
2 Replies
Missing this.

Solution
This is expected because Split, Stack, ... remove the classic table layout and therefore there are no headers anymore.