Laravel, как проверить столбец перечисления - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь сделать проверку столбца enum в laravel. Это код моего валидатора.

/**
 * Returns the rules and messages for validating this creation
 */
public static function ValidationBook($except = [], $append = []) {
    $book = ['rules' => [], 'messages' => []];
    $arr = config('constants.publication_statuses');
    $arrKeys = array_keys($arr);
    $book['rules'] = [
        'concert.title' => 'required|string',
        'concert.user_id' => 'required|exists:users,id',
        'concert.type' => [
            'required',
            Rule::in(['public', 'private']),
        ],
        'concert.status' => 'required',
        'concert.closes_on' => 'nullable'
    ];
    $book['messages'] = [

        'concert.title.required' => 'El título es requerido.',
        'concert.title.string' => 'El título debe ser un texto',

        'concert.user_id.exists' => 'Se debe ingresar un usuario válido.',

        'concert.type.required' => 'El tipo es requerido.',

        'concert.status.required' => 'El status es requerido.',
    ];
    if (!empty($except)) {
        $except = array_flip($except);
        $book['rules'] = array_diff_key($book['rules'], $except);
    }
    if (!empty($append)) {
        $book = array_merge_recursive($book, $append);
    }
    return $book;
}

Столбец enum является столбцом type. Также я пытался сделать 'concert.type' => 'required|in:public,private'

Затем я создаю свой валидатор, используя следующий код:

$vb = Concert::ValidationBook($except, $append);
$validator = Validator::make($data, $vb['rules'], $vb['messages']);

Но по какой-то причине, когда я отправляю почту через Почтальона, я получил "detail": "Undefined index: concert.type". Даже когда мои данные:

{
    "concert": {
        "title": "Title",
        "type": "novalidtype",
        "status": "open"
    }
}

Заранее спасибо

1 Ответ

1 голос
/ 27 марта 2019

Обычно enum будет установлен в базе данных как, а передний конец будет выпадающим списком

$ table-> enum (тип концерта, [публичный, приватный]);

Однако вы можете попробовать это решение

'concert_type' => 'in:public,private', // Публичные или частные значения

...