Skip to content

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: true in 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