spatie / laravel-query-builder

Easily build Eloquent queries from API requests
https://spatie.be/docs/laravel-query-builder
MIT License
4.02k stars 395 forks source link

Scope filters don't work with relationships #807

Closed chimit closed 2 years ago

chimit commented 2 years ago

Scope filters allow you to add local scopes to your query by adding filters to the URL. This works for scopes on the queried model or its relationships using dot-notation.

Unlike exact filters scope filters don't work on related models.

Works:

// District
->allowedFilters([
    AllowedFilter::exact('buildings.active')->default(true),
])

Doesn't work:

// District
->allowedFilters([
    AllowedFilter::scope('buildings.active')->default(true),
])

Scope filter works well on the model itself:

// Building
->allowedFilters([
    AllowedFilter::scope('active')->default(true),
])

Building scope:

public function scopeActive($query)
{
    return $query->where('active', 1);
}
chimit commented 2 years ago

Sorry, I was wrong. I misused the scopes.