两列组合Laravel验证唯一

时间:2018-07-28 14:39:16

标签: 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'
        ]);

1 个答案:

答案 0 :(得分:0)

如果我对您的理解很好,那么我认为最好的方法是使组合在迁移中唯一,并用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
    }
}