问题标签 [thephpleague-fractal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
67 浏览

laravel - 按 created_at 和文件关系分组集合

我有这个关系:

每个用户都有画廊,画廊有很多文件。

两个用户可以拥有同一日期的画廊。

这是输出 JSON 响应:

我需要以某种方式按 created_at 值对画廊进行分组,但是为了分组画廊对象,将所有文件保留在相同的 JSON 响应中。像这样:

我尝试使用->groupBy('galleries.created_at'),但我得到了这个 - 第一个画廊的第一个文件,第二个画廊的第一个文件

0 投票
0 回答
119 浏览

laravel - 使用 spatie/laravel-fractal 检索与用户相关的角色列表,权限完美运行

我按照这个主题使用 spatie/laravel-permission 通过用户模型获取角色和权限列表,但没有人关注我的问题。想要通过 spatie/laravel-fractal 检索与用户相关的角色列表,$user->roles就像$user->permissions我调用时的 zizaco/entrust 一样fractal($user, new UserTransformer)->parseIncludes(['roles', 'permissions'])->toArray();$this->collection($user->roles, new RoleTranformer)在 UserTranformer.php 中使用但 throws Symfony\Component\Debug\Exception\FatalThrowableError。我正在使用 laravel 5.7 和 spatie/laravel-permission 和 spatie/laravel-fractal 构建一个 API 项目,因此尝试使用关系组织 json 响应。

0 投票
1 回答
112 浏览

php - 解析包括嵌套变压器

鉴于以下情况,我试图弄清楚如何解析嵌套转换器的包含:

我有一个控制器,它设置我的 ArraySerializer,解析 OrderTransformer 的包含,然后创建数据:

在我的订单转换器中,我有我从上面解析的包含调度:

但是,我遇到困难的地方是我的 DispatchesTransformer:

我有一个我想使用的可用包含产品。我不想让它成为默认包含。我如何使用该包含?

我已经从我的控制器尝试过这样的事情:

->parseIncludes(['dispatches', 'product'])

0 投票
1 回答
931 浏览

php - 如何在 Laravel 中使用分形转换器返回数组而不是集合

我在基于 Laravel 的 REST API 项目之一中使用分形变压器。我有一个$defaultInclude,因此在 Transformer 类(ReleaseTransformer)中有一个函数来处理包含。如下:

DetailsTranformer课堂上我有

我在这里得到了正确的数据,但响应如下:

我想将响应作为数组获取,如下所示:

我正在使用扩展程序spatie/laravel-fractal,并通过以下方式获得响应:

如何修改代码,因为它将返回此数组?

0 投票
0 回答
90 浏览

laravel - Laravel 7(带有分形)在使用 withCount 方法时不包括关系计数

我是一个相对较新的 PHP 开发人员,所以我可能会弄错一些。

PHP:7.4 Laravel/Lumen:7.0 Fractal:0.13-dev(我认为)

我有一个模型,Programs

与 有belongsToMany关系Sites

我可以使用这个 ProgramController 方法:

使用以下 URL 从 API 返回嵌套关系:http://local:8081/ads/api/programs?client_id=130785&includes%5B0%5D=sites

当我删除includes查询参数时,sites块按预期下降。但是我的前端也需要嵌套关系的计数。我知道我可以简单地计算站点数组,但如果可能的话,我想从服务中获取它。

Laravel 文档表明有一个withCount“将{relation}_count在您的结果模型上放置一列”。但是,就我而言,它不起作用。当通过邮递员点击这个时,我希望在 Program 模型上看到一个额外的属性,"site_count": 1. 但我没有看到任何其他属性,也没有错误。

鉴于我对 PHP / Laravel 缺乏经验,我的第一个假设是我做错了什么,但我不知道它可能是什么。谁能提供我所缺少的洞察力?

0 投票
0 回答
31 浏览

php - 如何从分形库中删除数据

我正在使用 laravel 8 和分形库。我想删除data分形的属性结果DataArraySerializer

我的代码:

但结果是:

但我想得到这个结果:

0 投票
0 回答
48 浏览

php - Laravel Dingo API 转换器关系在 availableIncludes[] 中但不在 defaultIncludes[] 中时返回错误

在我的项目中,我使用 Dingo API 和 Fractal 转换器进行响应。

当我调用具有如下关系的站点资源列表 API 时:

如果我将关系放入$defaultIncludes[]变压器中,但如果我将这些关系放入$availableIncludes[]并像这样调用我的控制器,它会起作用:

我对数据库查询有一个错误:

请问我做错了什么?

谢谢你。

站点控制器.php

SiteTransformer.php

网站.php

0 投票
0 回答
12 浏览

lumen - 有没有办法可以在 League\Fractal 全局解析Includes 而不是在每个闭包中解析?

我正在使用 Lumen 和 Dingo 构建一个 API,并按照Dingo Wiki中的概述实现 Transformers ,并且我正在按照Fractal Transformers 文档中的概述配置包含选项。

我发现如何在 Controller 中作为闭包来执行此操作,但我觉得可能有更好的地方添加它,以便全局使用 parseIncludes 方法,而不是在每个返回中使用。以下是一些代码示例:

用户控制器.php

用户变压器.php

虽然此设置有效,但它需要我将该闭包添加到我想要包含的控制器中的每个响应中。有没有办法可以设置 Transformer 来检查所有请求的包含参数和 parseIncludes?

PHP: 7.4

流明:8.3.2

野狗:3.0.7

0 投票
1 回答
29 浏览

php - Laravel 双向数据转换器

我一直在寻找可以双向格式化字段的 Laravel 转换器。这意味着我在将它返回给客户端时对其进行转换,然后在将其再次保存到数据库之前对其进行转换。

我知道我已经可以使用 Fractal 的 Transformer 来做到这一点,但我正在寻找一种方法(代码或 3rd 方库)来实现自动转换。现在我这样做是为了保存功能:

我使用的是旧数据库,所以我在前端使用的字段与数据库不匹配。它也是一个大应用程序,所以我认为如果有一种方法可以使用Trait模型级别的继承,而不是从控制器、存储库、服务执行上面的代码,那会更好。