Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Eloquent Filtering Laravel Package

indexzer0/eloquent-filtering

Define allowed filters on your Eloquent models and apply them from simple arrays or request data—no custom query logic. Supports complex, type-based filtering for APIs and dashboards on Laravel 10+ / PHP 8.2+.

View on GitHub
Deep Wiki
Context7

title: 'Relations Allowed Fields' version: 'v2' icon: 'plus' iconType: 'solid'

Overview

By default, when specifying an Filter::relation() or Filter::morphRelation(), fields within that relationship are not included in the allowed filter list.

You can specify allowed filters inside a relation in two ways.

includeRelationFields()

Use ->includeRelationFields() on Filter::relation() or Filter::morphRelation().

public function allowedFilters(): AllowedFilterList
{
    return Filter::only(
        Filter::relation('manufacturer', [FilterType::HAS])
            ->includeRelationFields()
    );
}

For Filter::morphRelation(), you should specify the models for which to include the relation fields for.

public function allowedFilters(): AllowedFilterList
{
    return Filter::only(
        Filter::morphRelation(
            'subscribable',
            [FilterType::HAS_MORPH],
        )->includeRelationFields([
            FoodDeliveryService::class,
            Saas::class,
        ])
    );
}

Define allowedFilters

Alternatively, if you don't want to use ->includeRelationFields(), you can define allowedFilters for each Filter::relation() and Filter::morphType().

public function allowedFilters(): AllowedFilterList
{
    return Filter::only(
        Filter::relation(
            target: 'manufacturer',
            types: [FilterType::HAS],
            allowedFilters: Filter::only(
                Filter::field('name', [FilterType::LIKE])
            )
        )
    );
}
public function allowedFilters(): AllowedFilterList
{
    return Filter::only(
        Filter::morphRelation('subscribable', [FilterType::HAS_MORPH],
            Filter::morphType(
                type: FoodDeliveryService::class,
                allowedFilters: Filter::only(
                    Filter::field('name', [FilterType::EQUAL])
                )
            ),
            Filter::morphType(
                type: Saas::class,
                allowedFilters: Filter::only(
                    Filter::field('name', [FilterType::EQUAL])
                )
            ),
        )
    );
}
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium