# Search
# Overview
Good search is the backbone of any storefront so GetCandy aims to make this as extensible as possible so you can index what you need for your front-end, without compromising on what we require our side in the hub.
There are three things to consider when you want to extend the search:
- Searchable fields
- Sortable fields
- Filterable fields
Each of these can be extended using Model Observers in Laravel. The following models can be extended:
GetCandy\Models\Collection
GetCandy\Models\Customer
GetCandy\Models\Order
GetCandy\Models\Product
GetCandy\Models\ProductOption
# Creating and using an Observer
As mentioned, you simply need to add a Model Observer (opens new window) for what you want to extend.
<?php
namespace App\Observers;
use GetCandy\Models\Order;
class OrderObserver
{
/**
* Called when we're about to index the order
**/
public function indexing(Order $order)
{
$order->addSearchableAttribute(
'custom_field',
$order->meta->custom_field
);
}
/**
* Called when we are setting up the index via
* php artisan getcandy:meilisearch:update
* */
public function searchSetup(Order $order)
{
$order->addFilterableAttributes([
'custom_field'
]);
$order->addSortableAttributes([
'custom_field'
]);
}
}
You can then use these fields in your search:
Product::search('Foo')->where('custom_field', 'Bar');