Scris pe

Laravel – Searchable

Pentru un proiect la care lucrez acum am avut nevoie de un plugin de Laravel care sa ma ajute sa caut in anumite campuri din baza de date si sa ordonez dupa relevanta. Am gasit unul dar nu facea exact ce vroiam eu si m-am gandit sa modific si sa fac eu unul pe nevoile mele. Astfel am facut pachetul filipac/searchable.

Pentru instalare, adaugati in composer.json textul urmator dupa care dati composer update

"filipac/searchable": "1.0.*"
 Cum se foloseste?

In modelul care vreti sa fie cautabil, adaugati sus de tot linia aceasta: use Filipac\Searchable\SearchableTrait; si apoi folositi trait-ul in clasa: use SearchableTrait;

Va dau un exemplu complet:

use Filipac\Searchable\SearchableTrait;

class User extends \Eloquent
{
    use SearchableTrait;

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

Acum poti cauta in modelul respectiv astfel:

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

// Search and get relations
$users = User::search($query)
->with('photos')
->get();

Ce se intampla daca vrei sa cauti si in tabelele cu care modelul are relatii (cum a fost si cazul meu)? Pai in cazul acesta mai adauga in model codul urmator:

protected $joinable = [
    'profiles' => ['users.profile_id','profiles.id']
    ];

Dupa care poti adauga campurile din tabelul mentionat (profiles) astfel:

protected $searchable = [
        ['column' => 'name', 'relevance' => 10],
        ['column' => 'profiles.name', 'relevance' => 1],
        ['column' => 'profiles.description', 'relevance' => 2],
    ];

Mai multe detalii gasiti pe pagina de GitHub – aici. Documentatia este in engleza, though!


Faci un comentariu sau dai un răspuns?

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2021 toate drepturile
nu sunt
rezervate. Faceti ce vreti, e o tara libera.
Cred ca nu mai are rost sa zic, dar tema e facuta de mine cu TailwindCSS. Gasesti codul sursa aici.
Din pacate, inca folosesc Wordpress. Tema e insa custom Laravel 😎.
%d blogeri au apreciat: