问题描述
在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列表并返回已删除模型集合的字段。
因此,如果您返回多个要从查询中删除的模型,则可以使用这种方法一次将其全部删除。