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)
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)