Larave、ModelのSave時にバリデーションを実装
バリデーションの実装
\app\ValidateOnSave.phpを作成。
<?php
namespace App;
use Illuminate\Validation\ValidationException;
use Illuminate\Support\Facades\Validator;
trait ValidateOnSave
{
protected function rules():array
{
return [];
}
public function save(array $options = [])
{
$rules = $this->rules();
if (count($rules)) {
$subject = $this->attributes;
$validator = Validator::make($subject, $rules);
if ($validator->fails()) {
throw new ValidationException($validator);
}
}
return parent::save($options);
}
}
Model\app\Sample.phpを作成しバリデーションを実装。
<?php
namespace App;
class Sample extends Model
use ValidateOnSave;
// バリデーションルールの記載
protected function rules(){
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
}
実際にSampleクラスのsaveを実行してバリデーションを出してみます。。
$sample = new Sample(); $sample->save(); // バリデーションが実行されてエラーが出される
これでValidationExceptionがthrowされます。

0 件のコメント :
コメントを投稿