1. Go to this page and download the library: Download yurenery/sextant library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yurenery / sextant example snippets
class SomeModel extends Model
{
use HasSextantOperations;
...
public function extraFields()
{
return ['someRelation'];
}
...
public function someRelation()
{
return $this->hasOne(SomeRelation::class);
}
}
public function index(Request $request)
{
return SomeModel::withSextant($request)->get()
}
/message?filter={"created_at":{"from":"2016-02-20","to":"2016-02-24 23:59:59"}, "id":{"operation":"not in", "value":[2,3,4]}}
/message?filter={"id":{"from":2,"to":5}}
/message?filter={"id":{"to":5}} и /message?filter={"id":{"operation":"<=","value":5}} - эквивалентны
/message?filter={"updated_at":{"isNull":true}}
/message?filter={"answer":{"operation":"like","value":"Partial search string"}} - will be converted into: WHERE answer LIKE "%Partial search string%"
/message?filter={"answer":"Full search string"} - точный поиск по строке
/users?filter={"posts":{"operation":"has", "value":3, "condition":">"}} - find users with minimum 3 posts. Condition can be - <,>,=,<> and combinations.
/users?filter={"posts":{"operation":"doesnthave"}} - find users without posts.
/message?filter={"user.name":"asd"}
public function index(Request $request)
{
return SomeModel::withSextant($request, [], ['except' => ['expand' => ['someExpandName']]])->get();
}
public function index(Request $request)
{
return SomeModel::withSextant($request, [], ['only' => ['expand' => ['someAnotherExpandName']]])->get();
}
/message?filter={"answer":{"operation":"scope","value":"someScopeName"}} - without params
/message?filter={"answer":{"operation":"scope","value":"someScopeName","parameters":["some", "params for ", "scope input"]}} - with params
/message?filter={"answer":{"operation":"scope","value":"someScopeName","parameters":"one param"}} - with one param
/message?filter={"owner.first_name":{"operation":"scope","value":"someRelationScopeName","parameters":"Some name"}} - on relation usage.
class SomeModel extends Model
{
use HasSextantOperations;
...
public function extraScopes()
{
return ['someScopeName'];
}
...
public function scopeSomeScopeName($query)
{
$query->...
}
}
class SomeModel extends Model
{
public function scopeSomeScopeName($query)
{
$query->where('some_field', 'search')
->where(function($query){
$query->where('field', 'some search)
->orWhere('field', 'some other search');
})
}
}