Laravel 6 - проверка уникальности, игнорирование при двух условиях - один и тот же пользователь и имя. Также $ this-> id является нулевым при обновлении - PullRequest
1 голос
/ 11 декабря 2019

Пока у меня есть следующее правило:

$rules['name'] = [
    'required',
    'string',
    'min:3',
    'max:255',
    Rule::unique('user_templates', 'name')->ignore($this->id),
];

Пользователи могут создавать записи, но все его записи должны иметь уникальное имя (другие пользователи могут иметь записи с таким же именем). Как я могу это сделать? Кроме того, $this->id при обновлении всегда равно нулю. Что я делаю неправильно?

Контроллер

public function update(UserTemplatesRequest $request, $slug)
{
    try {
        $model = UserTemplates::where('slug', XSS::clean($slug))
            ->firstOrFail();
    } catch (ModelNotFoundException $err) {
        return redirect()->action('UserTemplatesController@index');
    }

    $data = $request->validated();

    if ($model->updateTemplate(XSS::clean($data, ['file']), $request)) {
        $message = "There was an error, please try again";
        $action = 'index';
        $id = '';
    } else {
        $message = "Category Updated";
        $action = 'edit';
        $id = $model->id;
    }

    return redirect()->action("CategoriesController@{$action}", [$id])
        ->with('message', $message);
}
...