我目前有一个模型,它有一个文本字段和一个字段.
我验证了我的表单请求类中的slug是唯一的:
public function rules() { return [ 'name' => 'required|min:3','slug' => 'required|alpha_dash|unique:questions' ]; }
这在创建时工作正常,并正确地拒绝创建重复的s..但是在我的更新方法中,它不会让我保存一个记录,因为slug已经存在.当然,这个s子确实存在,但它存在于被编辑的记录上,所以我想继续允许它被保存.然而,它不应该被改变为另一个记录的s..
这是我更新ArticlesController方法的样子:
public function update(Article $article,ArticleRequest $request) { $article->update($request->all()); return redirect('articles'); }
有没有办法使这项工作在L5?
在
unique rule中,您可以指定要忽略的ID.
原文链接:https://www.f2er.com/laravel/139640.html您可以创建2个单独的请求(一个用于创建,一个用于更新),但是您也可以通过这种方式来检查是否设置了(我认为您的更新url看起来像/ questions / 2):
public function rules() { $rules = [ 'name' => 'required|min:3','slug' => ['required','alpha_dash'] ]; $rule = 'unique:questions'; $segments = $this->segments(); $id = intval(end($segments)); if ($id != 0) { $rule .= ',slug,' . $id; } $rules['slug'][] = $rule; return $rules; } }