adelf / ventriloquist
Installs: 8 060
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: >=7.1
- laravel/framework: ^7.5
Requires (Dev)
- phpunit/phpunit: ^7.1
This package is auto-updated.
Last update: 2024-11-17 17:07:38 UTC
README
Suporte para fornecer uma interface única para consultas no banco de dados que utilizam ORMs com suporte a dotnotation (como o Eloquent)
Exemplo de uso
{ "values": [ { "name": "name" }, { "name": "last_name" }, { "name": "salary" }, { "name": "email" }, { "name": "vacation", "select": [ "id", "start_date", { "name": "allowance", "select": [ "id" ] } ] } ] }
Como o Ventriloquist foi desenvolvido orientado a microserviços que utilizam mensageria (de forma reativa), eis um exemplo de utilização em JSON, considerando que o padrão de mensagens utilizado seja JSON.
Um array PHP que vai gerar um JSON dessa forma é o seguinte:
array ( 0 => array ( 'name' => 'name', ), 1 => array ( 'name' => 'last_name', ), 2 => array ( 'name' => 'salary', ), 3 => array ( 'name' => 'email', ), 4 => array ( 'name' => 'vacation', 'select' => array ( 0 => 'id', 1 => 'start_date', 2 => array ( 'name' => 'allowance', 'select' => array ( 0 => 'id', ), ), ), )
Implementação
$parser = new Generator(); $parser->query($arrayQuery); $parser->rootModel(new \My\Root\Model()); $parsed = $parser->parse(); return $parsed->eloquentBuilder()->limit(10)->get();