Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP分形(transformers)输出一些奇怪的json_Php_Json - Fatal编程技术网

PHP分形(transformers)输出一些奇怪的json

PHP分形(transformers)输出一些奇怪的json,php,json,Php,Json,所以我不知道这是否是标准,但是这个json看起来不容易使用,特别是对于前端开发人员 因此,对于博客上的帖子,我使用了默认的include,变形金刚是: <?php namespace App\Etis\Domain\Transformers\Blog; use League\Fractal\TransformerAbstract; use App\Etis\Domain\Entities\BlogsEntity; use Carbon\Carbon; use App\Etis\Doma

所以我不知道这是否是标准,但是这个json看起来不容易使用,特别是对于前端开发人员

因此,对于博客上的帖子,我使用了默认的include,变形金刚是:

<?php

namespace App\Etis\Domain\Transformers\Blog;

use League\Fractal\TransformerAbstract;
use App\Etis\Domain\Entities\BlogsEntity;
use Carbon\Carbon;
use App\Etis\Domain\Transformers\Blog\Posts\PostsTransformer;

class BlogsTransformer extends TransformerAbstract {

    protected $defaultIncludes = [
        'posts'
    ];

    public function transform(BlogsEntity $blog) {

        return [
            'id'                => $blog->id,
            'belongs_to_user'   => $blog->user_id,
            'title'             => $blog->title,
            'created_at'        => $blog->created_at->format(Carbon::ISO8601),
            'updated_at'        => $blog->updated_at->format(Carbon::ISO8601)
        ];
    }

    public function includePosts(BlogsEntity $blog) {
        $posts = $blog->posts;

        return $this->collection($posts, new PostsTransformer);
    }
}
  • 那么,为什么我得到的JSON非常难看,似乎无法使用?
  • 为什么帖子没有嵌套在各自的 博客?

  • $manager->setSerializer(新的JsonApiSerializer())设置分形以输出符合JSON-API的JSON,它有一个非常特殊的规范()。如果您不希望其复杂(但标准化,这对前端人员可能非常有用)的输出,.

    虽然我同意,但如果您查看我的json,则会将属于日志的帖子放在日志下(或其中),因此我切换到数组序列化器,它可以正确嵌套内容。Thanks@TheWebs我确实看过你的JSON。JSON-API规范就是这么说的——属于博客的帖子由ID引用,它们的数据包含在
    中。连接它们的逻辑取决于前端人员。您编写或复制了开启JSON-API的位-不要怪我不知道它需要什么。:-)我不怪你。我只是喜欢提供更简单的JSON,它嵌套以显示关系,而不是让前端开发人员不得不添加额外的逻辑来搜索相关的元素和节点。英雄联盟
    
    <?php
    
    namespace App\Etis\Domain\Transformers\Blog\Posts;
    
    use League\Fractal\TransformerAbstract;
    use App\Etis\Domain\Entities\PostsEntity;
    use Carbon\Carbon;
    
    class PostsTransformer extends TransformerAbstract {
    
        public function transform(PostsEntity $post) {
            return [
                'id'          => $post->id,
                'title'       => $post->title,
                'content'     => $post->content,
                'blog_id'     => $post->blog_id,
                'published'   => $post->published,
                'slug'        => $post->slug,
                'saved'       => $post->saved,
                'created_at'  => $post->created_at->format(Carbon::ISO8601),
                'updated_at'  => $post->updated_at->format(Carbon::ISO8601)
            ];
        }
    }
    
    {  
       data:[  
          {  
             type:"blogs",
             id:"2",
             attributes:{  
                belongs_to_user:2,
                title:"Everymans Thoughts",
                created_at:"2016-04-28T16:14:48+0000",
                updated_at:"2016-04-28T16:14:48+0000"
             },
             relationships:{  
                posts:{  
                   data:[  
                      {  
                         type:null,
                         id:"2"
                      },
                      {  
                         type:null,
                         id:"3"
                      }
                   ]
                }
             }
          },
          {  
             type:"blogs",
             id:"1",
             attributes:{  
                belongs_to_user:1,
                title:"GNI2BOWLHy",
                created_at:"2016-04-22T19:56:23+0000",
                updated_at:"2016-04-22T19:56:23+0000"
             },
             relationships:{  
                posts:{  
                   data:[  
                      {  
                         type:null,
                         id:"1"
                      }
                   ]
                }
             }
          }
       ],
       included:[  
          {  
             type:null,
             id:"2",
             attributes:{  
                title:"Sample Blog",
                content:"<p><img src="            http://lorempixel.com/900/400/" alt="Image" /></p> <p>Lorem markdownum Hymenaee. <em>Triste</em> tamen? Sed herbas opibusque ratem placebant timor Trachinia libera verba opem teste aquaticus ne est paulum ipse Aesonides?</p> <p>Lorem markdownum Hymenaee. <em>Triste</em> tamen? Sed herbas opibusque ratem placebant timor Trachinia libera verba opem teste aquaticus ne est paulum ipse Aesonides?</p> <p>Lorem markdownum Hymenaee. <em>Triste</em> tamen? Sed herbas opibusque ratem placebant timor Trachinia libera verba opem teste aquaticus ne est paulum ipse Aesonides? if (operation_bitrate_cron.gpsOsEmulation(kde_terahertz_qwerty,
                gigabyte( mask) + surfaceKeywords))            {  
                   partition_whois += 2 + -2;
                }            memory *= portalLink; hdmi_tween = user.signature(mcaBooleanBatch * 54,
                header(driveDatabase),
                ip_latency);</p> <h2>Prope eripe consorte natis virgo appellant venisset</h2> <p>Gente cum audito nymphae <a href="http://hipstermerkel.tumblr.com/">levati veri ictibus</a>,
                aut arida,
                quantumque. Modo insistit <strong>quidem</strong>:satis parvos edaci totiens spectare,
                alto huic suis facitis nondum. Sorores <a href="http://www.thesecretofinvisibility.com/">oblita</a>,
                in ait pascas,
                tantum iam; speciem,
                labefactum. Postquam <strong>ager</strong> Talibus turba non uberrima,
                pulchro et quibus sententia munitos dum,
                et aquarum dubiae,
                pars. Terga vellet de Emathion Phlegyis Circes peremptam siccat,
                me suis Prochytenque.</p> <h2>A nostra</h2> <p>Paternos nequeunt,
                rapta,
                velles; fugisse his tergo plurima! Veni cognita cavernis et tergo interrumpente terra; nec ortus videtur cumque nunc! Dubitanti frater nunc moras tuque,
                est litore Plura. Haec color Ceres nitidis oculus,
                cum squamae,
                crede australem in abiere,
                te plebemque lentum!</p> <h2>Ab haec condi et suum memorabile nequiquam</h2> <p>Vulneribus docuique ridentem monstravit et <a href="http://gifctrl.com/">intacta vomit terroris</a> pia ille festumque iterque nunc,
                quamvis. Subito quid. Ad pariente mihi facto hortatibus nisi tamen pulsat dolor ac se,
                ille in orant quodcumque guttur,
                rite.</p> <blockquote> <p>Vultus Aiaci his picto,
                comitique huic,
                ferro:est certi,
                sententia commissas mater. Superi tabuerint terras intravit inertes conorque aurum reus mentas caelo ut et sintque:            <em>feruntur usus</em>. <a href="http://zombo.com/">Illa avsis noxque</a>,
                sua Bacchumque comminus positus. Cur igne paulatim?</p> </blockquote> <p>Non gauderet,
                vellere,
                auro halitus,
                fortuna non Picus me alios Cerberei potentes. Aquis praelatus soceri densa!</p> ",
                blog_id:2,
                published:true,
                slug:"sample-blog",
                saved:false,
                created_at:"2016-04-28T16:16:52+0000",
                updated_at:"2016-04-30T18:25:49+0000"
             }
          },
          {  
             type:null,
             id:"3",
             attributes:{  
                title:"asdasdasda",
                content:"<p>asdasdsadsa</p> ",
                blog_id:2,
                published:false,
                slug:"asdasdasda",
                saved:true,
                created_at:"2016-05-14T16:53:12+0000",
                updated_at:"2016-05-14T16:53:12+0000"
             }
          },
          {  
             type:null,
             id:"1",
             attributes:{  
                title:"yTxxDi0EwD",
                content:"YQzrVXMB5bXepspPNp0RLaCoqXYrWPgEvcZxcISrGcFBPFxic8KsdRYpvMLPlZenoJIlI2fpSwxbeTMtWDHZW8Z5fnUBBn6lTiVz",
                blog_id:1,
                published:true,
                slug:"ytxxdi0ewd",
                saved:false,
                created_at:"2016-04-22T19:56:23+0000",
                updated_at:"2016-04-22T19:56:23+0000"
             }
          }
       ],
       meta:{  
          pagination:{  
             total:2,
             count:2,
             per_page:15,
             current_page:1,
             total_pages:1,
             links:[  
    
             ]
          }
       }
    }
    
    public function getBlogs() {
        $manager = new Manager();
        $manager->setSerializer(new JsonApiSerializer());
    
        if (\Auth::check()) {
          $paginatedBlogs = BlogsEntity::orderBy('created_at', 'desc')->paginate();
          $blogs          = $paginatedBlogs->getCollection();
    
          $resource = new Collection($blogs, new BlogsTransformer(), 'blogs');
          $resource->setPaginator(new IlluminatePaginatorAdapter($paginatedBlogs));
    
          return $manager->createData($resource)->toArray();
        } else {
          return response()->json(['error_message' => 'You cannot access this route.']);
        }
    }