suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Beim Hinzufügen von Daten in Laravel wird Valdiate verwendet, um zu überprüfen, ob die Daten in der relationalen Tabelle vorhanden sind

Kann man beim Hinzufügen von Daten durch Valdiate überprüfen, ob die Daten in der relationalen Tabelle vorhanden sind?

黄舟黄舟2754 Tage vor530

Antworte allen(3)Ich werde antworten

  • 某草草

    某草草2017-05-16 16:50:44

    https://laravel.com/docs/5.3/...

    Antwort
    0
  • 迷茫

    迷茫2017-05-16 16:50:44

    1. 可以自定义验证, 貌似有点复杂.....鄙人水平有限, 可自行看官方文档

    2. 还可以自以为简单粗暴的方法, 在 Controller 中写你连表查询验证逻辑如果异常手动重定向并且抛出错误, 如下段代码

        public function store(Request $request)
        {
            $this->validate($request, [
                'password' => 'required|min:6|max:100',
                'newPassword' => 'required|min:6|max:100',
                'newPasswordConfirm' => 'required|same:newPassword|min:6|max:100',
            ], [], [
                'password' => '旧密码',
                'newPassword' => '新密码',
                'newPasswordConfirm' => '确认新密码',
            ]);
    
            #这个地方就是个自定异常的演示, 并不是你要的连表查询, 这里只提供一个思路
            if (!\Hash::check($request->get('password'), \Auth::user()->password)) {
                return redirect()->back()->withErrors(['password' => '旧密码错误']);
            }
    
        }

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 16:50:44

    可以,使用exists规则,例如

    'exists:表名,字段名'
    

    根据你的情况,使用自带规则无法满足,需要自己创建新的规则,这里以创建一个验证中文的规则为例

    $validator = app('validator');
    $validator->extend('chinese', function($attribute, $value, $parameters, $validator) {
        return Validator::chinese($value);
    });
    $validator->replacer("chinese", function($message, $attribute, $rule, $parameters) {
        if ($message == 'validation.chinese') {
            return "属性 {$attribute} 必须是合法的中文";
        }
    
        return $message;
    });
    

    具体参考文档 Custom Validation Rules 部分。

    Antwort
    0
  • StornierenAntwort