Column relationships
Displaying data from relationships
You may use "dot notation" to access columns within relationships. The name of the relationship comes first, followed by a period, followed by the name of the column to display:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('author.name')
Counting relationships
If you wish to count the number of related records in a column, you may use the counts() method:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('users_count')->counts('users')
In this example, users is the name of the relationship to count from. The name of the column must be users_count, as this is the convention that Laravel uses for storing the result.
Determining relationship existence
If you simply wish to indicate whether related records exist in a column, you may use the exists() method:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('users_exists')->exists('users')
In this example, users is the name of the relationship to check for existence. The name of the column must be users_exists, as this is the convention that Laravel uses for storing the result.
Aggregating relationships
Filament provides several methods for aggregating a relationship field, including avg(), max(), min() and sum(). For instance, if you wish to show the average of a field on all related records in a column, you may use the avg() method:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('users_avg_age')->avg('users', 'age')
In this example, users is the name of the relationship, while age is the field that is being averaged. The name of the column must be users_avg_age, as this is the convention that Laravel uses for storing the result.