Bonjour,
Je travaille actuellement sur un CRUD laravel d'une table pivot et passe par un FormRequest pour valider mes requêtes.
J'aimerais m'assurer que la combinaison de deux champs (operation_id et doctor_id) n'existent pas dans ma db, sauf s'il s'agit de mon model actuel.
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'operation_id' => 'required|exists:operations,id',
'doctor_id' => 'required|exists:doctors,id',
'value' => 'nullable|string',
];
}
/**
* Configure the validator instance.
*
* @param \Illuminate\Validation\Validator $validator
* @return void
*/
public function withValidator($validator)
{
$validator->after(function ($validator) {
if ($this->comboExistInDb()) {
$validator->errors()->add('operation_id', 'La combinaison des deux champs existent déjà');
$validator->errors()->add('doctor_id', 'La combinaison des deux champs existent déjà');
}
});
}
private function comboExistInDb()
{
return DoctorOperation::where('doctor_id', $this->doctor_id)
->where('operation_id', $this->operation_id)
->where('id', '!=', $this->route('doctor-operation')) // Supposedly get the route parameter
->exists();
}
Ce que je veux
J'aimerais que la combinaison de mes deux champs soient uniques sauf s'il s'agit de mon model actuel.
Ce que j'obtiens
Après validation, je suis directement redirigé vers mon formulaire avec le message
"La combinaison des deux champs existent déjà".
PS: J'ai déjà essayé avec Rule::unique && en inline 'unique'.