2017 © Pedro Peláez
 

module module-search

Search module.

image

netcore/module-search

Search module.

  • Tuesday, December 12, 2017
  • by netcorelv
  • Repository
  • 5 Watchers
  • 0 Stars
  • 168 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 7 Versions
  • 0 % Grown

The README.md

Module for easy search implementation

This module was made for easy searching in database., (*1)

Features

  • Multiple models per request
  • Search through multi-level relations

Pre-installation

This module is part of Netcore CMS ecosystem and is only functional in a project that has following packages installed:, (*2)

  1. https://github.com/netcore/netcore

Installation

  1. Require this package using composer
    composer require netcore/module-search
  1. Add SearchableContract and configure searchable models
    use Illuminate\Database\Eloquent\Model;
    use Modules\Search\Contracts\SearchableContract; 

    class Article extends Model implements SearchableContract {
        ...        

        /**
         * Get the config of search module for building queries.
         *
         * @return array
         */
        public function getSearchConfig(): array
        {
            return [
                // Base table colums
                'columns' => [
                    'slug',
                    'author_name',
                    'author_surname',
                ],

                // Add constant wheres if necessary
                // Helpful for columns like is_active, is_published etc..
                'wheres' => [
                    'is_active' => true,
                ],

                // Search in relations
                'relations' => [
                    'translations' => [
                        'columns' => [
                            'title', 
                            'content',
                            'intro_text',
                        ],
                        'wheres' => [
                            'locale' => app()->getLocale() // search only in translations for current locale
                        ],
                        // Nested relations supported
                        'relations' => [...]
                    ]
                ]
            ];
        }

        ...
    }

Searching records

  • To find something, you must use search() helper method
    $page = (int)request('page', 1) ?? 1;

    $results = search()
        ->of(\App\Article::class) // set searchable models (multiple allowed)
        ->setPage($page) // optional - set the current page (1st is by default)
        ->setRecordsPerPage(15) // optional - set records count per page (20 is by default)
        ->withLoggedQueries() // optional - enables query logging
        ->returnAsCollection() // optional - returns collection instead of array
        ->where(\App\Article::class, 'translations.is_active', true) // add additional where to translations relation
        ->where(\App\Article::class, 'is_awesome', true) // add additional where to base model
        ->find('keyword');

    dd($results);    

The Versions

12/12 2017

dev-master

9999999-dev http://netcore.lv

Search module.

  Sources   Download

MIT

The Requires

  • php >=7.0

 

by Viktors Ņikiforovs

12/12 2017

v0.0.5

0.0.5.0 http://netcore.lv

Search module.

  Sources   Download

MIT

The Requires

  • php >=7.0

 

by Viktors Ņikiforovs

12/12 2017

v0.0.4

0.0.4.0 http://netcore.lv

Search module.

  Sources   Download

MIT

The Requires

  • php >=7.0

 

by Viktors Ņikiforovs

12/12 2017

0.1.x-dev

0.1.9999999.9999999-dev http://netcore.lv

Search module.

  Sources   Download

MIT

The Requires

  • php >=7.0

 

by Viktors Ņikiforovs

12/12 2017

v0.0.3

0.0.3.0 http://netcore.lv

Search module.

  Sources   Download

MIT

The Requires

  • php >=7.0

 

by Viktors Ņikiforovs

11/12 2017

v0.0.2

0.0.2.0 http://netcore.lv

Search module.

  Sources   Download

MIT

by Viktors Ņikiforovs

30/11 2017

v0.0.1

0.0.1.0 http://netcore.lv

Search module.

  Sources   Download

MIT

by Viktors Ņikiforovs