参考 https://github.com/Cyvelnet/laravel5-fractal
composer require league/fractal 0.14.0
composer require Cyvelnet/laravel5-fractal
打开config/app.php
在providers中添加
Cyvelnet\Laravel5Fractal\Laravel5FractalServiceProvider::class,
在 aliases中添加
'Fractal' => Cyvelnet\Laravel5Fractal\Facades\Fractal::class,
在app文件夹下创建Transformers文件夹
在该文件夹下创建ArticleTransformer.php
< ?php
namespace App\Transformers;
use App\Model\Article;
use League\Fractal\TransformerAbstract;
class ArticleTransformer extends TransformerAbstract {
public
function transform(Article $article) {
return [
'id' = >$article - >id,
'title' = >$article - >title,
'content' = >$article - >content,
'created_at' = >$article - >created_at - >diffForHumans(),
];
}
}
在控制器中使用
<?php namespace App\Http\Controllers\Api; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Repositories\ArticleRepository; use Fractal; use App\Transformers\ArticleTransformer; class IndexController extends Controller { public function __construct(ArticleRepository $articleRepository) { $this->articleRepository = $articleRepository; } /*获取所有文章*/ public function index() { $articles = $this->articleRepository->all(); $data = Fractal::collection($articles, new ArticleTransformer())->getArray(); return apiResponse(200, 'ok', $data); }
}