PHP code example of beratkara / searchable

1. Go to this page and download the library: Download beratkara/searchable 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/ */

    

beratkara / searchable example snippets


use Nicolaslopezj\Searchable\SearchableTrait;

class User extends \Eloquent
{
    use SearchableTrait;

    /**
     * Searchable rules.
     *
     * @var array
     */
    protected $searchable = [
        /**
         * Columns and their priority in search results.
         * Columns with higher values are more important.
         * Columns with equal values have equal importance.
         *
         * @var array
         */
        'columns' => [
            'users.first_name' => 10,
            'users.last_name' => 10,
            'users.bio' => 2,
            'users.email' => 5,
            'posts.title' => 2,
            'posts.body' => 1,
        ],
        'joins' => [
            'posts' => ['users.id','posts.user_id'],
        ],
    ];

    public function posts()
    {
        return $this->hasMany('Post');
    }

}

// Simple search
$users = User::search($query)->get();

// Search and get relations
// It will not get the relations if you don't do this
$users = User::search($query)
            ->with('posts')
            ->get();

// Search with relations and paginate
$users = User::search($query)
            ->with('posts')
            ->paginate(20);

// Search only active users
$users = User::where('status', 'active')
            ->search($query)
            ->paginate(20);

// Restricted search

$filters = [
    [
        'type' => 'whereBetween',
        'column' => 'created_at',
        'data' => [
            Carbon::now()->startOfDay()->format('Y-m-d H:i:s'),
            Carbon::now()->endOfDay()->format('Y-m-d H:i:s')
        ]
    ]
];

$users = User::where('status', 'active')
            ->searchRestricted($query, $filters)
            ->paginate(20);

// Search with lower relevance threshold
$users = User::where('status', 'active')
            ->search($query, 0)
            ->paginate(20);

// Prioritize matches containing "John Doe" above matches containing only "John" or "Doe".
$users = User::search("John Doe", null, true)->get();

// Do not User::search("John Doe", null, true, true)->get();

use Nicolaslopezj\Searchable\SearchableTrait;

class User extends \Eloquent
{
    use SearchableTrait;

    /**
     * Searchable rules.
     *
     * @var array
     */
    protected $searchable = [
        'columns' => [
            'first_name' => 10,
            'last_name' => 10,
            'bio' => 2,
            'email' => 5,
        ],
    ];

}

$search = User::search('Sed neque labore', null, true)->get();