Skip to content

Instantly share code, notes, and snippets.

@nullthoughts
Last active December 1, 2023 21:59
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nullthoughts/636ed286f56b105e5a409145c82ddd5d to your computer and use it in GitHub Desktop.
Save nullthoughts/636ed286f56b105e5a409145c82ddd5d to your computer and use it in GitHub Desktop.
Convert Laravel Scout query to Eloquent query (Macro)
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Laravel\Scout\Builder;
class MacroServiceProvider extends ServiceProvider
{
/**
* Register macros.
*
* @return void
*/
public function register()
{
Builder::macro('toEloquent', function () {
$ids = $this->get()->pluck('id');
$order = $ids->implode(',');
return $this->model::whereIn('id', $ids)
->orderByRaw("FIELD(id, $order)");
});
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
@nullthoughts
Copy link
Author

nullthoughts commented Oct 4, 2023

Usage

Model::search('term')->toEloquent();
Model::search('term')->toEloquent()->get();
Model::search('term')->toEloquent()->pluck('column');
Model::search('term')->toEloquent()->orderBy('id', 'desc');
Model::search('term')->toEloquent()->whereIn('column->attribute', ['foo', 'bar']);
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment