#Table Widget - query with join

3 messages · Page 1 of 1 (latest)

gaunt lynx
#

Hello,

I have simple Table widget with custom query that use JOIN.
I can't use relations but need to use JOIN function

How can I call join fields in columns?

TextColumn::make('activity_group.activity_id') in code below

Thanks

<?php

namespace App\Filament\Widgets;

use Filament\Tables;
use Filament\Tables\Table;
use Filament\Tables\Columns\TextColumn;

use Filament\Widgets\TableWidget as BaseWidget;

use Filament\Widgets\Concerns\InteractsWithPageFilters;

use App\Models\UserActivity;

class GroupsReportTable extends BaseWidget
{

    use InteractsWithPageFilters;

    public function table(Table $table): Table
    {

        $filtro = $this->filters['filtro'] ?? 0;

        return $table
            ->query(UserActivity::query()
                ->leftJoin("activity_group", "user_activities.activity_id" ,"=", "activity_group.activity_id")
            )
            ->columns([
                TextColumn::make('id'),
                TextColumn::make('activity_group.activity_id'),
            ]);
    }
}
glass ospreyBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

gaunt lynx
#

Solved using select()

public function table(Table $table): Table
    {

        $filtro = $this->filters['filtro'] ?? 0;

        return $table
            ->query(UserActivity::query()
                ->join("activity_group", "user_activities.activity_id" ,"=", "activity_group.activity_id")
                ->join("groups", "groups.id" ,"=", "activity_group.group_id")  
                ->select("user_activities.*", "groups.descrizione AS groups_descrizione")             
            )
            ->columns([
                TextColumn::make('id'),
                TextColumn::make('groups_descrizione'),
            ]);
    }