Laravel验证:获取现有行的计数,以防止删除最后一行
在验证步骤中,我需要防止用户删除透视表中的最后一行。换句话说,用户在透视表中必须始终至少有一个条目 因此,当用户请求Laravel验证:获取现有行的计数,以防止删除最后一行,laravel,laravel-4,Laravel,Laravel 4,在验证步骤中,我需要防止用户删除透视表中的最后一行。换句话说,用户在透视表中必须始终至少有一个条目 因此,当用户请求$user->pivot->detach($id)时,我希望以某种方式检查用户pivot表中的行计数,如果计数为1或更少,则抛出验证错误 我知道我可以扩展验证器并制定自定义规则,但希望有人知道内置方法,或者已经编写了自定义方法 注意:存在:pivot\u user验证方法返回布尔值,因此无法工作。哦,很抱歉,我在发布答案时误解了您的问题:)因此基本上验证规则应该检查pivot表中与
$user->pivot->detach($id)
时,我希望以某种方式检查用户pivot表中的行计数,如果计数为1或更少,则抛出验证错误
我知道我可以扩展验证器并制定自定义规则,但希望有人知道内置方法,或者已经编写了自定义方法
注意:
存在:pivot\u user
验证方法返回布尔值,因此无法工作。哦,很抱歉,我在发布答案时误解了您的问题:)因此基本上验证规则应该检查pivot表中与给定的user\u id
匹配的条目数是否大于count($id)
是否至少增加1?(这意味着在执行detach
之后,pivot表中至少还剩下一个条目)。我不认为有“内置”的方法可以做到这一点。你必须自己写。我会将$user->pivot()->detach($id)
放在事务中,如果$user->pivot()->count()<1
,则回滚。这行吗?@edpaez,是的,这是一个选择。然而,我使用命令模式,关注点的分离要求行计数的检查应该在验证器中,而不是在处理程序中。我可能会编写一个自定义验证方法来进行检查。谢谢你的想法,我确实喜欢db事务处理方法。