首页 > 解决方案 > 两列的组合 Laravel Validation Unique

问题描述

我会更详细地介绍。首先是我要进行验证的表。

表名:groups_request;列名:idgroups_request (PK)、iduser、idgroups、request_active、created_at、updated_at

目前,用户 (iduser) 可以为每个组 (idgroups) 发出很多请求。目标是,如果组还没有来自该用户的请求,则用户只能向组发出请求。

示例:iduser = 1;idgroups = 100 -> 用户 1 不允许向组 100 发出请求!

为此,我需要一个在两个字段 iduser 和 idgroups 上唯一的验证。

这是我已经解决的问题,但它不起作用。但它不起作用。

$this->validate($request, [
        'Gruppe' => 'unique:groups_request,idgroups,' .Auth::id(). ',iduser'
        ]);

标签: laravelvalidationunique

解决方案


如果我理解你,那么,我认为最好的方法是在迁移中使组合唯一,并将你的代码包装在控制器中,try catch然后在发生异常时返回消息。如下所示:

移民:

$table->unique(['iduser', 'idgroups']);

控制器:

public function store()
{
    try {
        $model = Model::create(['iduser' => 1, 'idgroups' => 1]);
    } catch (\Exception $exception){
        // If already there is record with **iduser = 1** and **idgroups = 1** the exception will be thrown and your code here will be executed
    }
}

推荐阅读