使用数据透视表

时间:2015-11-13 17:30:50

标签: php validation laravel-5 pivot-table

我有一个模型Paper。纸张可以具有不同的尺寸和颜色,但尺寸仅与某些颜色相关,等等。我有一个数据透视表设置,其中大小对应于颜色。我正在使用表单请求验证,我的模型与大小和颜色设置belongsToMany关系。当我Paper:create时,如果颜色和大小是基于该数据透视表的不匹配,我想发送错误。是否有内置的“Laravel方式”来实现这一点,还是应该在设置颜色和大小时循环使用数据透视表?

1 个答案:

答案 0 :(得分:0)

我能想到的最“Laravely”方式是使用表单请求类,如下所示:

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class PaperFormRequest extends Request
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        // rules here
    }

    protected function getValidatorInstance()
    {
        $validator = parent::getValidatorInstance();

        $validator->after(function() use ($validator) {


            // logic for detecting mismatches goes here


            // To add validation-errors, simply do:
            $validator->errors()->add(
                'colorMistmatch',
                'This color does not go with this paper'
            );

            return $validator;
        }
    }
}

将错误添加到验证器实例后,您可以通过执行以下操作在刀片视图中显示错误:

@if ($errors->has('colorMistmach'))
   {{ $errors->first('colorMistmach') }}
@endif