adelf/ventriloquist

8,062 1
Install
composer require adelf/ventriloquist
Latest Version:2.0.0
PHP:>=7.1
Laravel:7
Older releases:5
License:MIT
Last Updated:Aug 17, 2020
Links: GitHub  ·  Packagist
Maintainer: AmadeusDelfino

Ventriloquist

Build Status StyleCI

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

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

644,549,754 9,698
laravel/framework

The Laravel Framework.

598,760,099 34,966
laravel/tinker

Powerful REPL for the Laravel framework.

507,193,856 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

423,477,751 607
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

403,217,078 4,664

Version History

Version Released PHP Laravel License
2.0.0 >=7.1 ^7.5 MIT
1.2.0 >=7.1 ^5.5 MIT
1.1.1 >=7.1 >=5.5 MIT
1.1.0 >=7.1 MIT
1.0.3 >=7.1 MIT