美文网首页
l5-repository 组件 -- Presenters

l5-repository 组件 -- Presenters

作者: 爱折腾的傻小子 | 来源:发表于2019-01-03 16:11 被阅读27次
    Presenters 过滤模型查出数据
    • 使用之前需要安装依赖包 composer require league/fractal
    • 使用文件夹目录
    app 
        -- Presenters
            --> BlogPresenter.php        # 示例文件名称
        -- Transformers
            --> BlogTransformer.php      # 示例文件名称
    
    • BlogPresenter.php 文件内容
    <?php
    namespace App\Presenters;
    use App\Transformers\BlogTransformer;
    use Prettus\Repository\Presenter\FractalPresenter;
    /**
     * Class BlogPresenter
     *
     * @package namespace App\Presenters;
     */
    class BlogPresenter extends FractalPresenter
    {
        /**
         * Transformer
         *
         * @return \League\Fractal\TransformerAbstract
         */
        public function getTransformer()
        {
            //> 返回当前 app/Transformers/BlogTransformer.php 实例对象
            return new BlogTransformer();
        }
    }
    
    • BlogTransformer.php 文件内容
    <?php
    namespace App\Transformers;
    use League\Fractal\TransformerAbstract;
    use App\Models\Blog;
    /**
     * Class BlogTransformer
     * @package namespace App\Transformers;
     */
    class BlogTransformer extends TransformerAbstract
    {
        /**
         * Transform the \Blog entity
         * @param \Blog $model
         *
         * @return array
         */
        public function transform(Blog $model)
        {
            //> 指定当前model查询出来的数据 为 指定的数据格式 并返回
            return [
                'id'         => (int) $model->id,
                /* place your other model properties here */
                'created_at' => $model->created_at,
                'updated_at' => $model->updated_at
            ];
        }
    }
    
    使用 Presenters
    • No 1. 全局应用 一旦调用 $this->repository 提供的方法就会使用
    # app/Repositories/BlogRepositoryEloquent.php 文件 添加如下方法
        /**
         * @return mixed
         */
        public function presenter()
        {
            return BlogPresenter::class;
        }
    
    • No 2. 控制器添加 Presenters
    //> 使用指定 presenters
    $this->repository->setPresenter("App\\Persenter\\BlogPresenter");
    
    • No 3.

    相关文章

      网友评论

          本文标题:l5-repository 组件 -- Presenters

          本文链接:https://www.haomeiwen.com/subject/slznkxtx.html