table counts added

This commit is contained in:
Benjamin Takats
2022-12-01 22:42:49 +01:00
parent e47ccf7308
commit 791cab77b9
7 changed files with 43 additions and 8 deletions

View File

@@ -30,11 +30,11 @@ class CityTable extends DataTableComponent
->searchable(), ->searchable(),
Column::make('Veranstaltungs-Orte') Column::make('Veranstaltungs-Orte')
->label( ->label(
fn($row, Column $column) => random_int(0, 100) fn($row, Column $column) => $row->venues_count
), ),
Column::make('Kurse') Column::make('Termine')
->label( ->label(
fn($row, Column $column) => random_int(0, 100) fn($row, Column $column) => $row->events_count
), ),
Column::make('') Column::make('')
->label( ->label(
@@ -46,6 +46,10 @@ class CityTable extends DataTableComponent
public function builder(): Builder public function builder(): Builder
{ {
return City::query() return City::query()
->withCount([
'venues',
'events',
])
->whereHas('country', fn($query) => $query->where('code', $this->country)); ->whereHas('country', fn($query) => $query->where('code', $this->country));
} }

View File

@@ -27,7 +27,7 @@ class CourseTable extends DataTableComponent
->sortable(), ->sortable(),
Column::make("Termine") Column::make("Termine")
->label( ->label(
fn($row, Column $column) => '<strong>'.$row->events->count().'</strong>' fn($row, Column $column) => '<strong>'.$row->events_count.'</strong>'
) )
->html() ->html()
->sortable(), ->sortable(),
@@ -43,6 +43,9 @@ class CourseTable extends DataTableComponent
public function builder(): Builder public function builder(): Builder
{ {
return Course::query() return Course::query()
->withCount([
'events',
])
->whereHas('events.venue.city.country', ->whereHas('events.venue.city.country',
fn($query) => $query->where('countries.code', $this->country)); fn($query) => $query->where('countries.code', $this->country));
} }

View File

@@ -35,7 +35,7 @@ class LecturerTable extends DataTableComponent
->sortable(), ->sortable(),
Column::make('Kurse') Column::make('Kurse')
->label( ->label(
fn($row, Column $column) => random_int(0, 100) fn($row, Column $column) => $row->courses_count
), ),
Column::make('') Column::make('')
->label( ->label(
@@ -47,6 +47,9 @@ class LecturerTable extends DataTableComponent
public function builder(): Builder public function builder(): Builder
{ {
return Lecturer::query(); return Lecturer::query()
->withCount([
'courses',
]);
} }
} }

View File

@@ -21,12 +21,14 @@ class VenueTable extends DataTableComponent
public function columns(): array public function columns(): array
{ {
return [ return [
Column::make("City id", "city_id")
->sortable(),
Column::make("Name", "name") Column::make("Name", "name")
->sortable(), ->sortable(),
Column::make("Street", "street") Column::make("Street", "street")
->sortable(), ->sortable(),
Column::make('Termine')
->label(
fn($row, Column $column) => $row->events_count
),
Column::make('') Column::make('')
->label( ->label(
fn($row, Column $column) => view('columns.venues.action')->withRow($row) fn($row, Column $column) => view('columns.venues.action')->withRow($row)
@@ -37,6 +39,9 @@ class VenueTable extends DataTableComponent
public function builder(): Builder public function builder(): Builder
{ {
return Venue::query() return Venue::query()
->withCount([
'events',
])
->whereHas('city.country', fn($query) => $query->where('code', $this->country)); ->whereHas('city.country', fn($query) => $query->where('code', $this->country));
} }
} }

View File

@@ -44,4 +44,14 @@ class City extends Model
{ {
return $this->belongsTo(Country::class); return $this->belongsTo(Country::class);
} }
public function venues(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(Venue::class);
}
function events()
{
return $this->hasManyThrough(Event::class, Venue::class);
}
} }

View File

@@ -43,4 +43,9 @@ class Lecturer extends Model
{ {
return $this->belongsTo(Team::class); return $this->belongsTo(Team::class);
} }
public function courses(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(Course::class);
}
} }

View File

@@ -42,4 +42,9 @@ class Venue extends Model
{ {
return $this->belongsTo(City::class); return $this->belongsTo(City::class);
} }
public function events(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(Event::class);
}
} }