adelf/ventriloquist

2.0.0 2020-08-17 07:40 UTC

This package is auto-updated.

Last update: 2024-09-17 16:50:35 UTC


README

Build Status StyleCI

为使用支持点符号(如Eloquent)的ORMs的数据库查询提供统一的接口支持

使用示例

{
	"values": [
	  {
	    "name": "name"
	  },
	  {
	    "name": "last_name"
	  },
	  {
	    "name": "salary"
	  },
	  {
	    "name": "email"
	  }, 
	  {
	    "name": "vacation",
	    "select": [
	      "id",
	      "start_date",
	      {
	        "name": "allowance",
	        "select": [
	          "id"
	        ]
	      }
	    ]
	  }
    ]
}

由于Ventriloquist是针对使用消息传递(以响应式方式)的微服务开发的,以下是一个使用JSON格式的示例,假设使用的是JSON消息格式。

以下是一个PHP数组,将生成上述格式的JSON:

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

实现

$parser = new Generator();
$parser->query($arrayQuery);
$parser->rootModel(new \My\Root\Model());
$parsed = $parser->parse();

return $parsed->eloquentBuilder()->limit(10)->get();