php 在Laravel验证关系

svdrlsy4  于 2023-01-08  发布在  PHP
关注(0)|答案(2)|浏览(156)

在Laravel中,我有一个persons模型,它与它的group有多对多的关系,这个人的名字需要在它的组中是唯一的,但在persons表中不是唯一的,如何确保这一点?
我的验证是使用$request->validate(['name => ...在控制器存储方法中完成的
我现在只使用-Person::create([...将新用户保存在控制器中

mf98qq94

mf98qq941#

我的简单方法是在透视表上使用复合主键,并在由于迁移而导致插入数据失败时使用基本的异常处理(如try catch

$table->foreignId('group_id') // Add any modifier to this column
$table->foreignId('person_id')  // Add any modifier to this column
$table->primary(['group_id', 'person_id']);

如果你想在控制器上做,确保设置好关系,然后使用Rule::notIn()Validation

'name' => [
   'required',
   Rule::notIn(/* put your logic here */),
],
hc8w905p

hc8w905p2#

您可以在Laravel Validation中使用“exist”规则,如下所示:'name' => 'exists:group,name,person_id,'.$id有关更多信息,请查看此处:https://laravel.com/docs/9.x/validation#rule-unique

相关问题