Skip to main content
Glama
brianirish

Laravel 12 Docs MCP Server

by brianirish
the-basics.md7.51 kB
# Nova - Search/The-Basics *Source: https://nova.laravel.com/docs/v5/search/the-basics* --- - [Community](https://discord.com/invite/laravel) - [Blog](https://blog.laravel.com) ##### Get Started - [Installation](/docs/v5/installation) - [Release Notes](/docs/v5/releases) - [Upgrade Guide](/docs/v5/upgrade) ##### Resources - [The Basics](/docs/v5/resources/the-basics) - [Fields](/docs/v5/resources/fields) - [Dependent Fields](/docs/v5/resources/dependent-fields) - [Date Fields](/docs/v5/resources/date-fields) - [File Fields](/docs/v5/resources/file-fields) - [Repeater Fields](/docs/v5/resources/repeater-fields) - [Field Panels](/docs/v5/resources/panels) - [Relationships](/docs/v5/resources/relationships) - [Validation](/docs/v5/resources/validation) - [Authorization](/docs/v5/resources/authorization) ##### Search - [The Basics](/docs/v5/search/the-basics) - [Global Search](/docs/v5/search/global-search) - [Scout Integration](/docs/v5/search/scout-integration) ##### Filters - [Defining Filters](/docs/v5/filters/defining-filters) - [Registering Filters](/docs/v5/filters/registering-filters) ##### Lenses - [Defining Lenses](/docs/v5/lenses/defining-lenses) - [Registering Lenses](/docs/v5/lenses/registering-lenses) ##### Actions - [Defining Actions](/docs/v5/actions/defining-actions) - [Registering Actions](/docs/v5/actions/registering-actions) ##### Metrics - [Defining Metrics](/docs/v5/metrics/defining-metrics) - [Registering Metrics](/docs/v5/metrics/registering-metrics) ##### Digging Deeper - [Dashboards](/docs/v5/customization/dashboards) - [Menus](/docs/v5/customization/menus) - [Notifications](/docs/v5/customization/notifications) - [Authentication](/docs/v5/customization/authentication) - [Impersonation](/docs/v5/customization/impersonation) - [Tools](/docs/v5/customization/tools) - [Resource Tools](/docs/v5/customization/resource-tools) - [Cards](/docs/v5/customization/cards) - [Fields](/docs/v5/customization/fields) - [Filters](/docs/v5/customization/filters) - [CSS / JavaScript](/docs/v5/customization/frontend) - [Assets](/docs/v5/customization/assets) - [Localization](/docs/v5/customization/localization) - [Stubs](/docs/v5/customization/stubs) On this page - [Searchable Columns](#searchable-columns) - [Full-Text Indexes](#full-text-indexes) - [Searching Relationships](#searching-relationships) - [MorphTo Relationships](#morphto-relationships) - [Searching JSON Data](#searching-json-data) Search # The Basics Learn how to define searchable columns for your Nova resources. ## [​](#searchable-columns) Searchable Columns To define which resource fields are searchable, you may assign an array of database columns to the `search` property or `searchableColumns` method of your resource class. This array includes the `id` column by default: Property Method Copy Ask AI ``` namespace App\Nova; class Post extends Resource { // ... /** * The columns that should be searched. * * @var array */ public static $search = [ 'id', 'title', 'content', ]; } ``` If you are using Nova’s Scout integration, the `$search` property has no effect on your search results and may be ignored. You should manage the searchable columns within the Algolia or Meilisearch dashboard. ## [​](#full-text-indexes) Full-Text Indexes Typically, Nova searches your database columns using simple `LIKE` clauses. However, if you are using MySQL or Postgres, you may take advantage of any full-text indexes you have defined. To do so, you should define a `searchableColumns` method on your Nova resource class instead of defining a `$search` property. The `searchableColumns` method should return an array of columns that are searchable. You may include an instance of `Laravel\Nova\Query\Search\SearchableText` within this array to instruct Nova to utilize your full-text indexes when querying a given column: app/Nova/Post.php Copy Ask AI ``` use Laravel\Nova\Query\Search\SearchableText; // ... /** * Get the searchable columns for the resource. * * @return array */ public static function searchableColumns() { return ['id', new SearchableText('title')]; } ``` The array returned by the `searchableColumns` method can also include raw SQL expressions, which allow you to search through derived columns: app/Nova/User.php Copy Ask AI ``` use Illuminate\Support\Facades\DB; // ... /** * Get the searchable columns for the resource. * * @return array */ public static function searchableColumns() { return ['id', DB::raw("CONCAT(first_name, ' ', last_name)")]; } ``` ## [​](#searching-relationships) Searching Relationships Laravel Nova also allows you to search against a resource’s related models. For example, imagine a `Post` model that is related to a `User` model via an `author` relatonship. You may indicate that this relationship data should be considered when searching for users by returning an instance of `Laravel\Nova\Query\Search\SearchableRelation` from your resource’s `searchableColumns` method. If the `searchableColumns` method does not exist on your resource, you should define it. Once the `searchableColumns` method has been defined, you may remove the `$search` property from your resource: app/Nova/Post.php Copy Ask AI ``` use Laravel\Nova\Query\Search\SearchableRelation; // ... /** * Get the searchable columns for the resource. * * @return array */ public static function searchableColumns() { return ['id', new SearchableRelation('author', 'name')]; } ``` For convenience, you may define a relationship that should be searched by adding the field to your resource’s `$search` property using “dot notation”: app/Nova/Post.php Copy Ask AI ``` /** * The columns that should be searched. * * @var array */ public static $search = [ 'id', 'author.name' ]; ``` ### [​](#morphto-relationships) MorphTo Relationships “Morph to” relationships can be made searchable by returning an instance of `Laravel\Nova\Query\Search\SearchableMorphToRelation` from your resource’s `searchableColumns` method. The `SearchableMorphToRelation` class allows you to specify which types of morphed models should be searched: app/Nova/~Resource.php Copy Ask AI ``` use App\Nova\Post; use Laravel\Nova\Query\Search\SearchableMorphToRelation; // ... /** * Get the searchable columns for the resource. * * @return array */ public static function searchableColumns() { return ['id', new SearchableMorphToRelation('commentable', 'title', [Post::class])]; } ``` ## [​](#searching-json-data) Searching JSON Data If the database table associated with your resource includes a column that contains a JSON string, you may instruct Nova to search within the JSON string by returning a `Laravel\Nova\Query\Search\SearchableJson` instance from your resource’s `searchableColumns` method. If the `searchableColumns` method does not exist on your resource, you should define it. Once the `searchableColumns` method has been defined, you may remove the `$search` property from your resource: app/Nova/UserProfile.php Copy Ask AI ``` use Laravel\Nova\Query\Search\SearchableJson; // ... /** * Get the searchable columns for the resource. * * @return array */ public static function searchableColumns() { return ['id', new SearchableJson('meta->address->postcode')]; } ``` Was this page helpful? YesNo [Authorization](/docs/v5/resources/authorization)[Global Search](/docs/v5/search/global-search) ⌘I

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brianirish/laravel-docs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server