search relation from resource in table throw error as name mismatch
I have 2 models
#Model Item
public function favorites()
{
return $this->hasMany('App\Models\Favorite');
}
#Model Favorite
protected $table = 'item_user';
public function item()
{
return $this->belongsTo('App\Item');
}
Database
Table item
id
user_id
otherfields...
Table item_user
id
user_id
item_id
I created a Filament 'Favorite Resource'
public static function table(Table $table): Table
{
return $table
->query(function (Item $query) {
return $query->whereHas('favorites', function($query){
$query->where('user_id', '=', auth()->user()->id);
});
})
->recordUrl(
fn (Item $record): string => "/listing/".$record->item_slug,
shouldOpenInNewTab: true,
)
->columns([
Stack::make([
// Columns
Tables\Columns\TextColumn::make('item_title')
->searchable(),
Tables\Columns\TextColumn::make('item_price')
->money('CAD'),
Tables\Columns\ImageColumn::make('attachments')
->label('Image')
->limit(2)
->circular()
->stacked()
->limitedRemainingText()
->defaultImageUrl(url('/images/placeholder.png')),
Tables\Columns\TextColumn::make('favorite.user_id')
->searchable(),
// ]),
]) ... The error I get is when I try to search the table Illuminate \ Database \ QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'favorite' in 'where clause'
// ]),
]) ... The error I get is when I try to search the table Illuminate \ Database \ QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'favorite' in 'where clause'
1 Reply
select
count(*) as aggregate
from
items
where
exists (
select
*
from
item_user
where
items
.id
= item_user
.item_id
and user_id
= 31
)
and (
item_title
like % test %
or json_unquote(json_extract(favorite
, '$."user_id"')) like % test %
)