微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将当前时间戳放在服务器端的 GraphQL 突变模式中?

如何解决如何将当前时间戳放在服务器端的 GraphQL 突变模式中?

用户取消订单时,我需要将当前时间戳放入变异查询中。 它应该在服务器端(因为依赖客户端的数据是不行的)。

这是我的 Laravel Lighthouse GraphQL 架构中的一个简单变化:

type Mutation {
    cancelOrder(id: ID!,canceled_at: DateTime = "2021-02-19 12:00:00"): Order @update
}

如何使用某种 Now() 函数结果更改此硬编码时间戳?像这样:

cancelOrder(id: ID!,canceled_at: DateTime = current_timestamp): Order @update

解决方法

我会创建一个像 php artisan lighthouse:mutation Order 这样的自定义突变,然后在我的架构上删除 @update 并放置 @field(resolver: "App\\GraphQL\\Mutations\\Order@cancel"),然后在类 Order 上这样做:

namespace App\GraphQL\Mutations;

class Order
{
   /**
   * @param  null  $_
   * @param  array<string,mixed>  $args
   */
   public function cancel($_,array $args)
   {
       $order = Order::findOrFail($args['id']);
       $order->canceled_at = now();
       $order->save();

       return $order;
   }
 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。