Scout Search Integration
Laravel DataTables supports Laravel Scout for full-text search capabilities. This integration uses Scout's search engine (Meilisearch or Algolia) for searching while maintaining DataTables' pagination, filtering, and ordering.
Requirements
- Laravel Scout installed and configured
- A Searchable model
- Meilisearch or Algolia as the search driver
Basic Usage
use Yajra\DataTables\Facades\DataTables;use App\Models\User; Route::get('user-data', function() { return DataTables::eloquent(User::query()) ->enableScoutSearch(User::class) ->toJson();});
Configure Maximum Results
By default, Scout search returns up to 1000 results. Adjust this with the second parameter:
use Yajra\DataTables\Facades\DataTables;use App\Models\User; Route::get('user-data', function() { return DataTables::eloquent(User::query()) ->enableScoutSearch(User::class, 500) ->toJson();});
Dynamic Filters
Use scoutFilter() to add dynamic filters to the Scout search:
use Yajra\DataTables\Facades\DataTables;use App\Models\User; Route::get('user-data', function() { return DataTables::eloquent(User::query()) ->enableScoutSearch(User::class) ->scoutFilter(function (string $keyword) { // Add Scout filters based on request parameters $filters = []; if (request()->has('role')) { $filters[] = "role = '" . request('role') . "'"; } if (request()->has('verified')) { $filters[] = "verified = " . (request('verified') ? 'true' : 'false'); } return implode(' AND ', $filters); }) ->toJson();});
Search Result Ordering
When using Scout search:
- Results are automatically ordered by search relevance
- User ordering is disabled by default to maintain relevance ordering
- The response includes
disableOrdering: truein the appended data
Supported Search Engines
| Engine | Support | Notes |
|---|---|---|
| Meilisearch | ✅ Full | Recommended |
| Algolia | ✅ Full | Requires API configuration |
Automatic Fallback
If Scout search fails (e.g., network error, service unavailable), DataTables automatically falls back to the standard database search.
See Also
- Laravel Scout Documentation
- Manual Search - Custom search logic
- Smart Search - Wildcard search