adelf/ventriloquist

2.0.0 2020-08-17 07:40 UTC

This package is auto-updated.

Last update: 2024-04-17 16:03:58 UTC


README

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