yonyon/eloquent-schema-query

EloquentSchemaQuery 是一个库,它从 Eloquent 中提取所需的项目。

v1.0.1 2017-08-16 19:00 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:01:24 UTC


README

EloquentSchemaQuery 是一个库,它从 Eloquent 中提取所需的项目。使用模式描述要获取的项目。

安装

composer require yonyon/eloquent-schema-query::dev-master

使用 Laravel

更新 composer 后,将服务提供者添加到 config/app.php 文件中的 providers 数组中

'providers' => [
    // Other service providers...

    yonyon\EloquentSchemaQuery\Provider\EloquentSchemaQueryServiceProvider::class,
],

同时,将外观添加到您的应用程序配置文件中的 aliases 数组中

'EloquentSchemaQuery' => \yonyon\EloquentSchemaQuery\Facades\EloquentSchemaQuery::class,

示例

$user = User::find(1);

$schema = new Schema([
  'id',
  'name',
  'todos' => new Schema([
    'name'
  ])
]);

$result = EloquentSchemaQuery::get($user, $schema);

当您想更改项目名称时

schema 的第二个参数是项目名称的别名。

$schema = new Schema([
  'id',
  'name',
  'todos' => new Schema([
    'name'
  ], 'todo_list') 
]);

FunctionSchema

当您想要获取执行 Eloquent 查询的结果,例如待办事项的数量时,使用 FunctionSchema。

$schema = new Schema([
  'id',
  'name',
  'todo_count' => new FunctionSchema(function($user) {
    return $user->todos->count();
  })
]);

如果查询结果是 Collection 或 Model,您必须将 schema 定义为第二个参数。

$schema = new Schema([
  'id',
  'name',
  'todo_count' => new FunctionSchema(
    function($user) {
      return $user->todos;
    },
    new Schema([
      'name'
    ]
  )
]);