2017 © Pedro Peláez
 

library the-brick

A library that provides content negotiation

image

sympla/the-brick

A library that provides content negotiation

  • Monday, June 18, 2018
  • by bruno.coelho
  • Repository
  • 3 Watchers
  • 2 Stars
  • 223 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 12 Versions
  • 69 % Grown

The README.md

sympla/the-brick

We all wish we had that wise neighborhood bartender to give us advice over a few rounds., (*1)

This library helps to negotiate content related to eloquent models (fields, relations and filters), (*2)

Installation

Install the package using composer:, (*3)

$ composer require sympla/the-brick ~1.0

Publish the package configuration: $ php artisan vendor:publish --provider="Sympla\Search\Search\SearchServiceProvider", (*4)

That's it., (*5)

Simple usage

public function index(Request $request)
{
    $res = $res->negotiate('Models\User');
    return response()->json($res);
}

Extend the negotiate on your model, (*6)

namespace App\Models;

use Sympla\Search\Model\Model;

class User extends Model
{
}

Create your filter, (*7)

public function scopeFilterByPhone($query)
{
   return $query->where('phone', '<>', '');
}

Now you simply call your route with your filter and the fields you want to return in the request, (*8)

http://localhost:8000/api/users?&fields=name,email&filters=filterByPhone

Parameter list

fields (string)

List of fields and relationships for the search: id,name,relationName(id,email), (*9)

filters (string)

List of scopes that will be called in your model: filterByName, (*10)

public function scopeFilterByName($query)
{
   return $query->where('name', Request::get('name'));
}
orderBy (string)

Query sort field, (*11)

sort (string)

Sort ASC or DESC, (*12)

limit (int)

Query records Limit, (*13)

noPaginate (bool)

Indicates whether the query will be paged, (*14)

size (int)

Indicates how many records per page, (*15)

debug (bool)

Returns an array with all the sql's that the query generated, (*16)

Using with Laravel

Service Provider (Optional on Laravel 5.5)

Once Composer has installed or updated your packages you need add aliases or register you packages into Laravel. Open up config/app.php and find the aliases key and add:, (*17)

Sympla\Search\Search\SearchServiceProvider::class,

Generating documentation

Docblock variables

  • @negotiate : Informs which model the deal is using
  • @negotiateDesc : Description of method/filter

How use

Add to your docblock the documentation variables, (*18)

Controller

/**
 * @negotiate Models\User
 * @negotiateDesc Get and filter all users
*/
public function index(Request $request)
{
    $res = $res->negotiate('Models\User');
    return response()->json($res);
}

Model

/**
 * @negotiateDesc Get users with phones
 */
public function scopeFilterByPhone($query)
{
   return $query->where('phone', '<>', '');
}

Generate the documentation

Execute this command, (*19)

php artisan negotiate:docgen

Accessing the Documentation

Access the documentation through the url http://localhost:8000/_negotiate/documentation, (*20)

Contact

Bruno Coelho bruno.coelho@sympla.com.br, (*21)

Marcus Campos marcus.campos@sympla.com.br, (*22)

License

This project is distributed under the MIT License. Check [LICENSE][LICENSE.md] for more information., (*23)

The Versions

18/06 2018

dev-master

9999999-dev

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

18/06 2018

1.0.8

1.0.8.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

02/05 2018

1.0.7

1.0.7.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

02/05 2018

dev-feature/add-limit

dev-feature/add-limit

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

10/04 2018

1.0.6

1.0.6.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

10/04 2018

dev-feature/add-like-comparison

dev-feature/add-like-comparison

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

16/03 2018

1.0.5

1.0.5.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

29/11 2017

1.0.4

1.0.4.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

16/11 2017

1.0.3

1.0.3.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

13/11 2017

1.0.2

1.0.2.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

07/11 2017

1.0.1

1.0.1.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho

07/11 2017

1.0

1.0.0.0

A library that provides content negotiation

  Sources   Download

MIT

The Development Requires

by Bruno Coelho