如何在Laravel中的类别下验证唯一性字段的唯一性

时间:2020-01-30 11:58:01

标签: laravel validation

我有两个表类别 sub_categories 。 我想验证子类别表中的名称字段在同一类别下是否唯一。

sub_category表字段

id |名称| category_id

使用Laravel验证,我正在使用此代码,但收到错误消息ErrorException Undefined 变量:request

public function update(Request $request, $id)
    {

       $validatedData = $request->validate([
          'category_id' => 'required|numeric|min:1',
          'name' => [
            'required', 'max:255',
            Rule::unique('sub_categories')->ignore($id)->where(function($query){
              return $query->where('category_id',$request->category_id);
            })
          ],

      ]);
    }

3 个答案:

答案 0 :(得分:1)

使用use($request)在条件

内传递$ request实例
 public function update(Request $request, $id)
    {

        $validatedData = $request->validate([
            'category_id' => 'required|numeric|min:1',
            'name' => [
                'required', 'max:255',
                Rule::unique('sub_categories')->ignore($id)->where(function ($query) use($request) {
                    return $query->where('category_id', $request->category_id);
                }),
            ],

        ]);
    }

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bgcolour"
    tools:context=".Variables.varL.varL2">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent">

        <TextView
            android:id="@+id/t0"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="There are 8 primitive data types for creating variables in Java."
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="visible"
            app:layout_constraintBottom_toTopOf="@+id/t1"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/t1"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="byte\n8 bit integer\n-128 to 127\nDefault of 0"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintBottom_toTopOf="@+id/t2"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.495"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t0" />

        <TextView
            android:id="@+id/t2"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="short\n16 bit integer\n-32768 to 32767\nDefault of 0"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintBottom_toTopOf="@+id/t3"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.495"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t1" />

        <TextView
            android:id="@+id/t3"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="int\n32 bit integer\n-2147483648 to 2147483647\nDefault of 0"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.495"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t2" />

        <TextView
            android:id="@+id/t4"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="long\n64 bit integer\n-9223372036854775808 to 9223372036854775807\nDefault of 0L"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintBottom_toTopOf="@+id/t5"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.495"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t3" />

        <TextView
            android:id="@+id/t5"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="float\nDecimal point number\n1.5*10^-45 to 3.4*10^38\nDefault of 0.0f"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintBottom_toTopOf="@+id/t6"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.495"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t4" />


        <TextView
            android:id="@+id/t6"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="double\nDecimal point number\n5.0*10^-324 to 1.7*10^308\nDefault of 0.0"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintBottom_toTopOf="@+id/t7"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t5" />

        <TextView
            android:id="@+id/t7"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="char\nA unicode character e.g 'a','b'\n(\u0000 to \uffff) or (0 to 65535)\nDefault of null"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintBottom_toTopOf="@+id/t8"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.504"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t6" />

        <TextView
            android:id="@+id/t8"
            android:layout_width="300sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="@drawable/edit_round"
            android:gravity="center"
            android:padding="10dp"
            android:text="boolean\nLogical true or false\ntrue or false\nDefault of false"
            android:textColor="@android:color/black"
            android:textColorHighlight="#FF000000"
            android:textSize="15sp"
            android:visibility="invisible"
            app:layout_constraintBottom_toTopOf="@+id/b1"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.504"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t7" />

        <Button
            android:id="@+id/b1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="150dp"
            android:layout_marginTop="20dp"
            android:layout_marginEnd="150dp"
            android:layout_marginBottom="20dp"
            android:background="@drawable/b_round"
            android:text="Continue"
            android:textColor="@android:color/white"
            android:visibility="invisible"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/t8" />

        <TextView
            android:id="@+id/x"
            android:layout_width="15dp"
            android:layout_height="35dp"
            android:layout_marginStart="10dp"
            android:text="x"
            android:textColor="@android:color/white"
            android:textSize="30sp"
            app:layout_constraintBottom_toTopOf="@+id/t0"
            app:layout_constraintEnd_toEndOf="@+id/t0"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />


    </androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>

答案 2 :(得分:0)

   $this->validate($request,[
        'name' => 'required|unique:categories',
    ]);