Как сопоставить определенное значение внутри массива, используя красноречивый Laravel 5.8? - PullRequest
0 голосов
/ 28 апреля 2019

При проверке я не установил уникальное имя поля продукта, но хочу, чтобы он был уникальным в некоторых отношениях, например, для продуктов с одинаковым идентификатором пользователя. Я хочу, чтобы у одного пользователя было уникальное имя продукта. Так же, как и некоторый код для сопоставления значения, которое является именем поля продукта с массивом имен продуктов из базы данных.

    $products = Product::find(auth()->user()->id)->get();

    foreach ($products as $product) {
        $pro_name = $product->name;
    }

    $value = Input::get('name');

    if ($value == anyOf($pro_name) {
        return false;
    }

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Эту валидацию также можно определить с использованием стандартной валидации Laravel:

    $this->validate(
        $request,
        [
            'name' => \Illuminate\Validation\Rule::unique('products', 'name')
                ->ignore($id) // id of product being updated. If it is a new product you can remove this, or pass null
                ->where(function ($query) {
                    return $query->where('user_id', \Auth::user()->id);
                })
        ]
    );
0 голосов
/ 28 апреля 2019

Я предполагаю, что user_id не является первичным ключом таблицы вашего продукта.так что вы не можете использовать поиск.сделать это так:

$products = Product::where(user_id, auth()->user()->id)->get();

вам нужен массив названий продуктов.получите это так:

$pro_name = Product::where(user_id, auth()->user()->id)->pluck('name')->toArray();

чтобы проверить массив на предмет использования определенного ключа:

if (in_array($value, $pro_name)) {
    return false;
}

также вы можете сделать все это так:

$value = Input::get('name');

$product = Product::where(user_id, auth()->user()->id)->where('name', $value)->first();

if ($product){
return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...