存在多个表的验证

问题描述 投票:0回答:1

Laravel版本(7.x)。

我有三个表companiescomplaint_typescomplaints

投诉与company相关。

[将complaint分配给employee后,只有他/她才能在访问后看到并输入投诉状态。在输入注释之前,必须先验证complaint,否则必须不允许输入注释,这是在通过称为complaint_id的隐藏字段提交表单时进行的。

我添加了此验证,因为我不希望任何人打开检查工具,使用值并导致应用程序出错。

表格:

companies:  ->  complaint_types:  ->  complaints:
|-- id          |-- id                |-- id
|-- ...         |-- company_id        |-- complaint_type_id
                |-- ...               |-- ...

Complaint.php:

public function complaintType()
{
    return $this->belongsTo(ComplaintType::class);
}

ComplaintType.php:

public function company()
{
    return $this->belongsTo(Company::class);
}

public function complaints()
{
    return $this->hasMany(Complaint::class);
}

ComplaintController.php:

private function validate($data)
{
    # variables
    $rules = [
        'complaint_id' => [
            'required', 
            'exists:complaints,id,complaintType.company_id,' . session()->get('COMPANY')
        ],

        -- OR --

        'complaint_id' => [
            'required', 
            'exists:complaints,id,complaint_types.company_id,' . session()->get('COMPANY')
        ],

        ...
    ];

    $messages = [
        'complaint_id.required' => '`Complaint` - Required<br>',
        'complaint_id.exists'   => '`Complaint` could not be identifed<br>',

         ...
    ];

    return Validator::make($data, $rules, $messages);
}

错误

Column not found: 1054 Unknown column 'complaintType.company_id' in 'where clause' (SQL: SELECT COUNT(*) as aggregate FROM complaints WHERE id = 3 AND complaintType.company_id = 1)

Laravel版本(7.x)。我有三个表公司,compression_types和投诉。投诉与一家公司有关。将投诉分配给员工时,只有他/她...

laravel validation exists multiple
1个回答
0
投票

$ rules = ['complaint_id'=> ['需要','exists:complaints,id,complaintType.company_id'。 session()-> get('COMPANY_ID')],

© www.soinside.com 2019 - 2024. All rights reserved.