该软件包的最新版本(2.0.7)没有提供许可信息。

2.0.7 2014-01-11 16:31 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:36:53 UTC


README

Build Status

创建API可能是一项繁琐的任务,如果您需要以特定方式过滤数据,事情可能会变得复杂。Epi提供了一个控制器,用于处理Eloquent模型的CRUD基本任务,但Epi在index/“读取全部”方法中真正大放异彩。

想象一下,您有一个Page模型,它与一个PageTranslation模型相关联。您可能希望通过PageTranslation模型中的slug来检索页面。使用Epi,这就像请求以下URL一样简单:api/pages?filter[translation.slug]=some-slug

安装

要将Epi添加到您的Laravel应用程序中,请按照以下步骤操作

将以下内容添加到您的composer.json文件中

"vespakoen/epi" : "dev-master"

然后,运行composer update或如果您尚未安装包,请运行composer install

将以下行添加到app/config/app.php配置文件中的providers数组(在末尾)

'Vespakoen\Epi\EpiServiceProvider',

可选地,如果您不想在控制器中添加“use”语句,将以下行添加到app/config/app.php配置文件中的aliases数组(在末尾)

'EpiController' => 'Vespakoen\Epi\Controllers\EpiController',

配置

您需要运行以下命令以将配置发布到应用程序,否则在包更新时它将被覆盖。

php artisan config:publish vespakoen/epi

用法

要使用Epi构建API,我们需要创建一个从EpiController扩展的控制器,并将其与路由器注册。首先我们需要创建一个控制器,最好是将其与您的其他控制器分开,将API的控制器放在一个新的文件夹中。这个文件夹可以是app/controllers/api(确保您将此路径添加到app/start/global.php中的自动加载器中!)或/src/Somevendor/SomePackage/Controllers/Api,具体取决于您的具体情况。

以下是一个示例

<?php

class ApiUsersController extends Controller {

	/**
	 * Create a new ApiUsersController instance.
	 *
	 * @param  Illuminate\Database\Eloquent\Model  $model
	 * @return void
	 */
	public function __construct(User $model)
	{
		// Epi will look for $this->model, so make sure it is set like this.
		$this->model = $model;
	}

	/**
	 * $eagerLoad Relations to eagerload by default
	 *
	 * @var array
	 */
	public $eagerLoad = array();

	/**
	 * $indexRules Validation rules used when getting a list of resources
	 *
	 * @var array
	 */
	public $indexRules = array();

	/**
	 * $storeRules Validation rules used when storing a resource
	 *
	 * @var array
	 */
	public $storeRules = array(
		'email' => 'required|email'
	);

	/**
	 * $updateRules Validation rules used when updating a resource
	 *
	 * @var array
	 */
	public $updateRules = array(
		'email' => 'required|email'
	);

}

现在我们需要将此控制器与路由器注册,这就像将以下行添加到您的app/routes.php文件中一样简单。

Route::resource('api/users', 'ApiUsersController');

完成!

它是如何工作的?

在内部,Epi通过其魔力使所有好东西发生,我想您一定很好奇它是如何工作的,为了理解这一点,让我们首先看看Epi代码库中存在的对象。

操纵器

操纵器是一个修改将要执行的查询的对象。操纵器还将添加和使用别名以避免与自引用关系冲突。Epi内置以下操纵器。

过滤器

对查询和别名表调用->where()

连接

对查询和别名表调用->join()

限制器

对查询和别名表调用->take()和可选的->skip()

排序器

对查询和别名表调用->orderBy()

提取器

提取器获取所有输入,并必须确保从它们中提取正确的操纵器。Epi内置以下提取器。

过滤器提取器

...

连接提取器

...

限制器提取器

...

排序器提取器

...

关系

Epi为每个Laravel关系都有自己的关系对象,这些对象有一个->getJoins()方法,该方法将返回用于过滤或排序相关表的连接操纵器。

更多内容即将推出...