Laravelには、ユーザーが登録できるAPIがあります。
登録には、電子メールが一意であることの簡単な検証があり、次のようになります。
public function register(Request $request) {
$this->validate($request, [
'email' => 'required|email|unique:users|max:255',
'password' => 'required|min:6|max:50',
]);
// create new user and save model
}
残念ながら、私のテーブルには、メールが重複しているかなりの数のユーザーがまだ見つかりました。
この理由は、私のアプリが同じリクエストを複数回連続して送信することがあるからだと思います。これは、両方のリクエストがデータベースにまだ追加されていないため、同じ電子メールを持っていても検証に合格することを意味します。
メールの一意性を確保するためにこの問題を修正するにはどうすればよいですか?
try-catch block
実際にデータを挿入するときにa を使用できます(詳細については、PHP マニュアルを参照してください)。
try {
$connection->query(<yourInsertquery>);
return true;
} catch (PDOException $e){
if ($e->getCode() == 1062){
return 'duplicate';
}
return false;
}
これにより、'duplicate'
エントリが重複false
している場合は常にString が返されます。true
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加