如何为laravel中的字段设置唯一属性

如何为laravel中的字段设置唯一属性,laravel,Laravel,我有一个建筑物表,其中db中有建筑物名称。当我通过刀片添加建筑物时,如果建筑物名称存在,则无法添加。我想显示一些错误,而不是将其存储到db。我应该怎么做 这是我的确认 $validator = Validator::make( $request->all(), [ 'b_name' => 'required|max:20', ], [ 'b_name.required'

我有一个建筑物表,其中db中有建筑物名称。当我通过刀片添加建筑物时,如果建筑物名称存在,则无法添加。我想显示一些错误,而不是将其存储到db。我应该怎么做

这是我的确认

  $validator = Validator::make(
        $request->all(),
        [
            'b_name' => 'required|max:20',
        ],
        [
            'b_name.required' => '*please fill this field',

        ]
    );
    if ($validator->fails()) {

        return Response::make([
            'message' => trans('validation_failed'),
            'errors' => $validator->errors(),
        ]);
      } 
      if ($validator->passes()) {
    $name = $request->input('b_name');
    $description = $request->input('b_description');
    $created_at = Carbon::now();
    $updated_at = Carbon::now();
    $array = array('name' => $name, 'description' => $description, 'created_at' => $created_at, 'updated_at' => $updated_at);
    Building::insert($array); 

如果b_name是建筑名称的输入,name建筑模型的数据库字段名称,请在验证中尝试此代码

'b_name' => 'required|max:20|unique:App\Building,name'

有关更多详细信息,请访问:

您的代码应该如下

      $input = $request->all();
      $rules = ['b_name' => 'required|required|unique:table_name,b_name|max:20'];
      $messages = [
                   'b_name.required' => '*please fill this field'
                   'b_name.unique' => 'building name already taken.'
                  ];
      $validator = Validator::make($input, $rules, $messages);
      $input = $request->all();
      $rules = ['b_name' => 'required|required|unique:table_name,b_name|max:20'];
      $messages = [
                   'b_name.required' => '*please fill this field'
                   'b_name.unique' => 'building name already taken.'
                  ];
      $validator = Validator::make($input, $rules, $messages);