フォームリクエストバリデーション機能を実装したのですが、編集時にパスワードを何も触らずに、保存したところ自身のパスワードで値が重複したと判定されてバリデーションがかかってしまうので、自身のパスワードは除外するといったような記述をしたのですが、うまくいきません
試したコードと結果
'cast_password' => [Rule::unique('casts', 'cast_password')->where('user_id', $user_id)->whereNull('deleted_at')->ignore($this->input('cast_password'))]
編集画面 何も変更せずに保存するとパスワードがすでに使われていますとバリデーションがかかってしまいます。
試したコードと結果
'cast_password' => [Rule::unique('casts', 'cast_password')->whereNot('cast_password', $this->input('cast_password'))->where('user_id', $user_id)->whereNull('deleted_at')]
バリデーションがそもそも効かなくなる
ソースコード
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Auth; use App\Models\Cast; use Illuminate\Http\Request; use App\Http\Controllers\CastController; class CastRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(Request $request) { // $castpw = CastController::$castpw; $cast = Auth::user(); // $cast = Cast::find($request)->cast_password; // dd($cast); $user_id = Auth::id(); return [ 'cast_password' => [Rule::unique('casts', 'cast_password')->where('user_id', $user_id)->whereNull('deleted_at')->ignore($this->input('cast_password'))] ]; } }
あなたの回答
tips
プレビュー