当用户取消订单时,我需要将当前时间戳放在突变查询中。它应该在服务器端(因为它不能依赖于客户端的数据)。
下面是我的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")
,然后在类顺序上这样做:
namespace AppGraphQLMutations;
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;
}
}