mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
subquery
This commit is contained in:
@@ -3,6 +3,8 @@
|
|||||||
namespace App\Http\Livewire\Tables;
|
namespace App\Http\Livewire\Tables;
|
||||||
|
|
||||||
use App\Models\Meetup;
|
use App\Models\Meetup;
|
||||||
|
use App\Models\MeetupEvent;
|
||||||
|
use App\Models\MeetupUser;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Rappasoft\LaravelLivewireTables\DataTableComponent;
|
use Rappasoft\LaravelLivewireTables\DataTableComponent;
|
||||||
use Rappasoft\LaravelLivewireTables\Views\Column;
|
use Rappasoft\LaravelLivewireTables\Views\Column;
|
||||||
@@ -16,8 +18,8 @@ class MeetupTable extends DataTableComponent
|
|||||||
public function configure(): void
|
public function configure(): void
|
||||||
{
|
{
|
||||||
$this->setPrimaryKey('id')
|
$this->setPrimaryKey('id')
|
||||||
|
->setDebugEnabled()
|
||||||
->setAdditionalSelects(['id', 'slug'])
|
->setAdditionalSelects(['id', 'slug'])
|
||||||
->setDefaultSort('meetup_events_count', 'desc')
|
|
||||||
->setThAttributes(function (Column $column) {
|
->setThAttributes(function (Column $column) {
|
||||||
return [
|
return [
|
||||||
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
|
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
|
||||||
@@ -32,12 +34,6 @@ class MeetupTable extends DataTableComponent
|
|||||||
})
|
})
|
||||||
->setColumnSelectStatus(false)
|
->setColumnSelectStatus(false)
|
||||||
->setPerPage(10);
|
->setPerPage(10);
|
||||||
|
|
||||||
if ($this->country) {
|
|
||||||
$this->setDefaultSort('meetup_events_count', 'desc');
|
|
||||||
} else {
|
|
||||||
$this->setDefaultSort('users_count', 'desc');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function filters(): array
|
public function filters(): array
|
||||||
@@ -87,8 +83,16 @@ class MeetupTable extends DataTableComponent
|
|||||||
'meetupEvents' => fn($query) => $query->where('start', '>=',
|
'meetupEvents' => fn($query) => $query->where('start', '>=',
|
||||||
now()),
|
now()),
|
||||||
])
|
])
|
||||||
->when($this->country,
|
->when(!$this->country, fn($query) => $query->orderBy(
|
||||||
fn($query) => $query->orderBy('meetup_events_count', 'desc'));
|
MeetupUser::select('meetup_id')
|
||||||
|
->whereColumn('meetup_id', 'meetups.id')
|
||||||
|
))
|
||||||
|
->when($this->country, fn($query) => $query->orderBy(
|
||||||
|
MeetupEvent::select('start')
|
||||||
|
->whereColumn('meetup_id', 'meetups.id')
|
||||||
|
->where('start', '>=', now())
|
||||||
|
->orderBy('start')
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function meetupEventSearch($id)
|
public function meetupEventSearch($id)
|
||||||
|
|||||||
10
app/Models/MeetupUser.php
Normal file
10
app/Models/MeetupUser.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class MeetupUser extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'meetup_user';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user