首页 > 解决方案 > Laravel 5.7 使用不同于模型属性的表单字段进行验证

问题描述

在以下情况下,我无法运行 laravel 验证。

我有一个表格,用户在其中注册自己和他的公司(empresa)。

用户和 empresa 都具有“documento”属性,因此在表单中,我将个人文档称为“cpf”,将公司文档称为“documento_corp”。

问题是我需要检查这些是否已经注册。

我尝试了以下但它给了我

未找到列:1054 'where 子句'中的未知列'documento_corp'(SQL:选择计数(*)作为聚合来自empresaswhere documento_corp= 29242509000122 和(documento= 29242509000122))

return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:6', 'confirmed'],
        'phone' => ['required', 'string', 'min:10', new Telefone],
        'cpf' => ['required', 'string', 'min:11', new Cpf],

        'name_corp' => ['required', 'string', 'max:255'],
        'email_corp' => ['required', 'string', 'email', 'max:255'],
        'phone_corp' => ['required', 'string', 'min:10', new Telefone],
        'documento_corp' => ['required', 'string', 'min:11', Rule::unique('empresas')->where(function($query) use ($data) {
            return $query->where('documento', $data['documento_corp']);
        }), new CpfOuCnpj],
        'cep_corp' => ['required', 'string', 'min:8'],
        'rua_corp' => ['required', 'string', 'min:5'],
        'uf_corp' => ['required', 'string', 'min:2', 'max:2'],
        'bairro_corp' => ['required', 'string', 'min:5'],
        'cidade_corp' => ['required', 'string', 'min:2'],
    ]);

那我该怎么做呢?

标签: laravel

解决方案


你不能做unique:empresas,documento吗?

语法为:unique:table,column,except,idColumn


推荐阅读