nicolaslopezj / searchable

A php trait to search laravel models
MIT License
2.01k stars 291 forks source link

Change Columns and Joins Dynamically [SOLVED] #208

Open trijulio opened 4 years ago

trijulio commented 4 years ago

If you want to change the columns to search on the same model, you can do it dynamically inserting this code to your model or to the source file:

vendor/nicolaslopezj/searchable/src/SearchableTrait.php

    public function scopeSetSearchScope($query,$search = []){
        $this->searchable = $search;
        return $query;
    }

Then you can:

        $toSearch = [
            'columns' => [
                'contacts.name' => 10,
                'contacts.last_name' => 10,
                'contacts.alias' => 10,
                'fields.value' => 5,
            ],
            'joins' => [
                'fields' => ['contacts.id','fields.contact_id'],
            ],
        ];

        $contacts =  Contact::with(['fields'])
                    ->companyScope()
                    ->setSearchScope($toSearch)
                    ->search(request('search'),null,true)
                    ->groupBy('contacts.id')
                    ->orderBy('relevance','desc')
                    ->paginate(request('show',100));