首页 > 解决方案 > Laravel 验证规则,每月仅创建一篇文章

问题描述

是否可以在 Laravel 中创建一个允许用户每月只创建一篇文章的验证?

标签: phplaravelvalidation

解决方案


我不知道您使用的是哪个版本的 Laravel,并且您省略了很多有关架构等的数据,但让我在这里尝试提供帮助。

您可以检查如何进行自定义验证https://laravel.com/docs/7.x/validation#custom-validation-rules(以下解决方案也适用于 Laravel 5)

Validator::extend('hasnt-posted-in-last-month', function($attribute, $value, $parameters)
{
    return \App\Post::where('author_id', auth()->user()->id)
        ->where('created_at', '>=', now()->subMonth())
        ->count() === 0;
});

上面的代码有一些前提:1)您在应用程序文件夹中有一个 Post 模型 2)您的迁移中有 withTimestamps() 用于 post 表 3)您的用户在到达这部分代码时始终处于登录状态

然后,您需要在调用请求时调用此验证(或在控制器中使用 Validator::make 进行验证)

注意:为了给您的用户提供更好的用户体验,您应该事先让他们知道他们不允许发帖,这样他们就不会填写所有表单来发送帖子然后收到错误消息。


推荐阅读