Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

This package allow you to include relationship columns into Laravel Nova search query.

License

NotificationsYou must be signed in to change notification settings

TitasGailius/nova-search-relations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I stand with Ukraine🇺🇦

This package allows you to include relationship columns into Laravel Nova search query.

Screenshot

screenshot of the search relations tool

Installation

composer require titasgailius/search-relations

Next, addTitasgailius\SearchRelations\SearchesRelations trait to your base resource classApp\Nova\Resource

useTitasgailius\SearchRelations\SearchesRelations;abstractclass Resourceextends NovaResource{use SearchesRelations;

Usage

Simply addpublic static $searchRelations variable to any of your Nova resources.This array accepts a relationship name as a key and an array of searchable columns as a value.

/** * The relationship columns that should be searched. * * @var array */publicstatic$searchRelations = ['user' => ['username','email'],];

Alternatively, you may add a staticsearchableRelations() method to return an array of searchable relations.

/** * Get the searchable columns for the resource. * * @return array */publicstaticfunctionsearchableRelations():array{return ['user' => ['username','email'],    ];}

Global search

You may customize the rules of your searchable relationships for global search by defining the$globalSearchRelations property.

/** * The relationship columns that should be searched globally. * * @var array */publicstatic$globalSearchRelations = ['user' => ['email'],];

Alternatively, you may add a staticgloballySearchableRelations() method to return an array of globally searchable relations.

/** * Get the searchable columns for the resource. * * @return array */publicstaticfunctiongloballySearchableRelations():array{return ['user' => ['email'],    ];}

Disabling global search for relationships

You may disable the global relationship search by declaring$globalSearchRelations with an empty array.

/** * The relationship columns that should be searched globally. * * @var array */publicstatic$globalSearchRelations = [];

Alternatevily, you may disable the global search for relationships by setting the$searchRelationsGlobally property tofalse.

/** * Determine if relations should be searched globally. * * @var array */publicstatic$searchRelationsGlobally =false;

Nested relationships

You may search nested relationships using dot notation.

/** * The relationship columns that should be searched. * * @var array */publicstatic$searchRelations = ['user.country' => ['code'],];

Extending Search

You may apply custom search logic for the specified relations by retuning a class implementing aSearch interface.

/** * Get the searchable columns for the resource. * * @return array */publicstaticfunctionsearchableRelations():array{return ['country' =>newLocationSearch(['USA','UK']),    ];}

Your custom search class must implement a simpleSearch interface that has a single method which acceptsthe current query$query, a relationship name$relation and a search input$search.

<?phpnamespaceTitasgailius\SearchRelations\Contracts;useIlluminate\Database\Eloquent\Builder;interface Search{/**     * Apply search for the given relation.     *     * @param  \Illuminate\Database\Eloquent\Builder  $query     * @param  string  $relation     * @param  string  $search     * @return \Illuminate\Database\Eloquent\Builder     */publicfunctionapply(Builder$query,string$relation,string$search):Builder;}

You may take a look at theTitasgailius\SearchRelations\Searches\RelationSearch class as an example.

About

This package allow you to include relationship columns into Laravel Nova search query.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp