Как добавить условие, когда я использую уникальную функцию в проверке в Laravel Framwork - PullRequest
0 голосов
/ 23 мая 2019

У меня есть две базы данных;первая база данных содержит таблицу с именем product, которая содержит идентификатор, статус, удалено.

вторая база данных содержит таблицу с именем product, которая содержит идентификатор, id_product, имя, цену.

Я использую правило проверкиuniq как показано ниже:

$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)

как я могу сделать уникальную функцию для принятия условиякак

`status`=? AND `deleted`=?

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете создать Пользовательское правило :

php artisan make:rule UniqueActive

затем в вашем только что созданном классе:

приложение / Правила / 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',                          //   ^^^^^^^^^^^^^^
        ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...