olivernybroe / lighthouse-math-scalars
用于与 https://github.com/webonyx/graphql-php 一起使用的自定义标量类型集合
v0.2.2
2021-02-02 06:45 UTC
Requires
- php: ^7.4|^8.0
- brick/math: ^0.9.1
- nuwave/lighthouse: ^5.0
Requires (Dev)
- pestphp/pest: ^1.0
README
用于与Lighthouse一起使用的自定义标量类型集合。
安装
composer require olivernybroe/lighthouse-math-scalars
使用
您可以使用提供的标量类型,就像在模式定义中使用任何其他类型一样。
标量类型会在Lighthouse中自动注册。
type Battle { id: ID! attacker: User! defender: User! gold_stolen_ratio: Percentage! gold_stolen: BigInteger! }
标量类型
BigInteger
此标量表示一个大小最多为 2^63
的整数,而内置的 Int
类型限制为 2^31
。返回的值表示为整数,而不是字符串。
BigIntegerString
此标量表示一个无限制大小的整数。它总是以字符串的形式返回值。
BigInteger
总是返回一个整数,但限制为 2^63
,而 BigIntegerString
适用于需要比这更大值的场景。
BigIntegerDynamic
此标量表示一个比内置 Int
类型更大的整数。
内置类型限制为 2^31
,但此类型的大小无限制,因为它可以使用字符串来表示。
它将以整数形式返回您查询的结果,只要您的整数小于 2^63
。如果您的整数大于这个值,它将以字符串形式返回。
Percentage
将整数值转换为百分比。
通常,我们许多人将百分比存储为整数值,并将其除以100以获取百分比。
此标量会为您执行此转换。如果用作输入类型,它也会执行相同的转换。
此标量对API的用户来说很有用,可以快速识别出类型是百分比。
转换
一组可以在Laravel模型中使用的转换,用于转换属性。
BigInteger (OliverNybroe\LighthouseMathScalars\Casts\BigInteger
)
当处理大于 2^63
的整数时,需要一个类来进行所有数学计算。
为此,此包在底层依赖于 \Brick\Math\BigInteger
。
此转换会将值转换为 BigInteger
类。
use OliverNybroe\LighthouseMathScalars\Casts\BigInteger as BigIntegerCast; use Brick\Math\BigInteger; use Illuminate\Foundation\Auth\User as Authenticatable; /** * @property BigInteger $gold */ class User extends Authenticatable { protected $casts = [ 'gold' => BigIntegerCast::class, ];