Laravel Lighthouse:如何删除符合特定条件的记录而不是通过主键删除

问题描述

在Laravel Lighthouse GraphQL中,我希望能够删除符合某些条件的记录,而不仅仅是传递单个ID。

我收到此错误

@delete指令要求字段deletePostTag仅包含一个参数。

目前似乎不支持功能,但是如果我错了并且实际上已经支持功能,请告诉我,因为这是最简单的方法

因此,我的第二种方法是尝试首先运行@find查询以检索要删除的记录的ID(基于等于某些值的某些字段)。

但是https://lighthouse-php.com/4.16/api-reference/directives.html#find显示

type Query {
  userById(id: ID! @eq): User @find
}

并且没有显示如何提供(代替主键ID)2个参数:外键ID和字符串。

如何最简单地完成删除符合特定条件的记录的目标(而不是通过主键删除)?

解决方法

我不确定关于多个参数的@delete功能,但是根据您所发布的内容,目前似乎尚不支持。关于您的查询,您应该将@all@where结合使用,这将允许您按所需的vars / args过滤集合。如果您的参数列表超过3个左右,我将看看Complex Where Conditions。到目前为止,它们对我的团队一直很好,并且允许很大的过滤灵活性。

还要看一下指令的文档,说明:

您还可以一次删除多个模型。定义一个包含ID列表并返回已删除模型集合的字段。

因此,如果您返回多个要从查询中删除的模型,则可以使用这种方法一次将其全部删除。