Laravel-Rule :: unique运作不佳,我做错了什么?

时间:2018-08-12 06:50:22

标签: php laravel laravel-5.6 laravel-validation

我正在尝试构建某种方法来避免同一用户向同一用户报告多个其他用户,但是出于一个原因,Rule :: unique方法忽略了数据

  • Laravel版本:5.6。*
  • PHP版本:7.1.16
  • 数据库驱动程序和版本:mysql

测试文件

我正在通过HTTP Test进行此操作,我正在使用 DatabaseTransactions ,该功能会针对测试功能的每个结尾进行还原(这不是在此功能中创建的Report的情况,即使我尝试过在数据库上插入之前

pow

ReportsController

这里是接收请求的文件,控制器是从另一个文件扩展过来的,所以我覆盖了模型并请求了验证器,因此在CrudController之后我可以对其进行验证

series <- "GSE85358"
gset <- getGEO(series , GSEMatrix =TRUE, AnnotGPL=TRUE, destdir = "....." )

CrudController

在这里,我只是执行操作,所以在运行验证之前和操作之后

session_start()

ReportsRequet

最后,这是文件,我对此请求进行了验证,要记住的重要一点是:所有其他规则都运行良好,因此,该请求调用了RequestValidator public function testWithAlreadyReportedBySameReporter() { $paramsReport = ['user_reported_id' => 2, 'user_reporter_id' => 1]; $report = new Report($paramsReport); $report->save(); $response = $this->post(self::apiUrl, $paramsReport, self::headers); $response->assertStatus(422)->assertJsonValidationErrors(['user_reporter_id']); }

class ReportsCtrl extends CrudController
{
    protected $mainModel = Report::class;
    protected $mainValidator;

    public function store(Request $request)
    {
        $this->mainValidator = ReportsRequet::createFromBase($request);
        return parent::store($request);
    }
}

0 个答案:

没有答案