PHP code example of protonemedia / laravel-cross-eloquent-search
1. Go to this page and download the library: Download protonemedia/laravel-cross-eloquent-search library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
protonemedia / laravel-cross-eloquent-search example snippets
use ProtoneMedia\LaravelCrossEloquentSearch\Search;
$results = Search::add(Post::class, 'title')
->add(Video::class, 'title')
->search('howto');
Search::new()
->add(Post::class, 'title')
->add(Video::class, 'title')
->search('howto');
Search::new()
->when($user->isVerified(), fn($search) => $search->add(Post::class, 'title'))
->when($user->isAdmin(), fn($search) => $search->add(Video::class, 'title'))
->search('howto');
Search::add(Post::class, 'title')
->add(Video::class, 'title')
->beginWithWildcard()
->search('os');
Search::add(Post::class, 'title')
->add(Video::class, 'title')
->beginWithWildcard()
->endWithWildcard(false)
->search('os');
Search::add(Post::class, 'title')
->add(Video::class, 'title')
->search('"macos big sur"');
Search::add(Post::class, 'title')
->add(Video::class, 'title')
->dontParseTerm()
->search('macos big sur');
Search::add(Post::class, 'title', 'published_at')
->add(Video::class, 'title', 'released_at')
->orderByDesc()
->search('learn');
Search::add(Post::class, 'title')
->beginWithWildcard()
->orderByRelevance()
->search('Apple iPad');
Search::new()
->add(Comment::class, ['body'])
->add(Post::class, ['title'])
->add(Video::class, ['title', 'description'])
->orderByModel([
Post::class, Video::class, Comment::class,
])
->search('Artisan School');
Search::add(Post::class, 'title')
->add(Video::class, 'title')
->paginate()
// or
->paginate($perPage = 15, $pageName = 'page', $page = 1)
->search('build');
Search::add(Post::class, 'title')
->add(Video::class, 'title')
->simplePaginate()
// or
->simplePaginate($perPage = 15, $pageName = 'page', $page = 1)
->search('build');
Search::add(Post::published(), 'title')
->add(Video::where('views', '>', 2500), 'title')
->search('compile');
Search::add(Post::class, ['title', 'body'])
->add(Video::class, ['title', 'subtitle'])
->search('eloquent');
Search::add(Post::class, ['comments.body'])
->add(Video::class, ['posts.user.biography'])
->search('solution');
Search::new()
->add(Post::class, 'title')
->addFullText(Video::class, 'title', ['mode' => 'boolean'])
->addFullText(Blog::class, ['title', 'subtitle', 'body'], ['mode' => 'boolean'])
->search('framework -css');
Search::new()
->addFullText(Page::class, [
'posts' => ['title', 'body'],
'sections' => ['title', 'subtitle', 'body'],
])
->search('framework -css');
Search::new()
->add(Post::class, 'framework')
->add(Video::class, 'framework')
->soundsLike()
->search('larafel');
Search::add(Post::with('comments'), 'title')
->add(Video::with('likes'), 'title')
->search('guitar');
Search::add(Post::class)
->orderBy('published_at')
->add(Video::class)
->orderBy('released_at')
->search();
Search::add(Post::published(), 'title')
->add(Video::where('views', '>', 2500), 'title')
->count('compile');
Search::add(Post::class, 'title')
->add(Video::class, 'title')
->tifier.
{
"current_page": 1,
"data": [
{
"id": 1,
"video_id": null,
"title": "foo",
"published_at": null,
"created_at": "2021-12-03T09:39:10.000000Z",
"updated_at": "2021-12-03T09:39:10.000000Z",
"type": "Post",
},
{
"id": 1,
"title": "foo",
"subtitle": null,
"published_at": null,
"created_at": "2021-12-03T09:39:10.000000Z",
"updated_at": "2021-12-03T09:39:10.000000Z",
"type": "Video",
},
],
...
}
class Video extends Model
{
public function searchType()
{
return 'awesome_video';
}
}
// Example result with searchType() method.
{
"current_page": 1,
"data": [
{
"id": 1,
"video_id": null,
"title": "foo",
"published_at": null,
"created_at": "2021-12-03T09:39:10.000000Z",
"updated_at": "2021-12-03T09:39:10.000000Z",
"type": "awesome_video",
}
],
...
$terms = Search::parseTerms('drums guitar');
Search::parseTerms('drums guitar', function($term, $key) {
//
});