当我在Laravel框架验证中使用唯一功能时如何添加条件

时间:2019-05-23 16:50:06

标签: php laravel laravel-5 eloquent

我有两个数据库;第一个数据库包含一个名为product的表,其中包含id,状态和已删除。

第二个数据库包含一个名为product的表,其中包含id,id_product,名称,价格。

我使用以下验证规则uniq:

Codable

它很好用,但是如果我想使用以下独特功能创建条件:

$this->validate($request,[
            'name'  =>'required|max:25|min:1|unique:mysql2.products,name|alpha',
            'price' =>'required'
            ]);

我如何制作一个独特的函数来接受

之类的条件
"select * from `product` where `name`=? AND `status`=? and `deleted `=?",array($name,1,1)

1 个答案:

答案 0 :(得分:0)

您可以创建一个Custom Rule

php artisan make:rule UniqueActive

然后在您新创建的课程中:

app / Rules / UniqueActive.php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Uppercase implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return ! Product
                   ::where('name', '=', $value)
                   ::where('status', 1)
                   ::where('deleted', 1)
                   ::exists();
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute is not unique.';
    }
}

然后在您的控制器中:

use App\Rules\UniqueActive;

//

$this->validate($request,[
            'name'  => ['required', 'max:25', 'min:1', 'alpha', new UniqueActive],
            'price' => 'required',                          //   ^^^^^^^^^^^^^^
        ]);