前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel Validator 更新时验证记录唯一的小技巧

Laravel Validator 更新时验证记录唯一的小技巧

作者头像
魔王卷子
发布2019-05-30 20:40:05
1.6K0
发布2019-05-30 20:40:05
举报
文章被收录于专栏:魔王卷子的专栏

比如我们在新增一篇文章的时候,我们一般会写如下的表单验证。

代码语言:javascript
复制
$this->validate($request, [
    'title' => 'required|unique:article|max:255',
]);

这样在新增的时候是没什么问题的,但是在更新的时候就出现了一个问题,就是当我们的title没有发生改变的时候,我们使用unique的时候,会将原来的记录行进行扫描,这样就会提示我们该标题已经存在

这样就比较坑爹了,那么有没有什么办法可以解决呢。办法是有的,其实很简单,我们只需要跟下面那样写就好了:

代码语言:javascript
复制
$id = $request->input("id", 0);
$this->validate($request, [
    'title' => "required|unique:article,id,{$id}|max:255",
]);

这样的话在验证唯一的时候就会不去验证id=$id的记录。这样就可以防止我们刚才碰到的问题了。

那么不管新增还是更新,套路就是这样了:

代码语言:javascript
复制
$id = $request->input("id", 0);
$this->validate($request, [
    'title' => "required|unique:article,id,{$id}|max:255",
]);

if ($id < 1) { // 新增
    $info = new Article();
} else {
    $info = Article::where("id", $id)->first();
}

$info->title = $request->input("title");

if ($info->save()) {
    // 操作成功
} else {
    // 操作失败
}

Laravel真是最好的框架。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-172,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档