###前提・実現したいこと
Laravel5とクエリビルダ等を使ってフォームに入力された内容を、データベースへ登録するシステムを作っています。
そこで、主キーとなるIDをオートインクリメントではなく、ランダムな8桁の数字で登録したいのですが、自分で作成したソースに不安があるので、ご確認いただけないでしょうか?
###該当のソースコード
//MastersController.php //入力内容の登録 public function master_new(MasterRequest $request) { // 新しいレコードの追加 #ユーザー名(管理番号)を取得 $user = $request->user(); #masterモデルクラスのオブジェクトを作成 $master = new Master(); #masterモデルクラスのプロパティに値を代入 $master->user = $user->name; #ランダムなIDを生成する $flg = true; while($flg){ $id = mt_rand(10000000, 99999999); $data = Master::where('id', 'LIKE', $id); if($id === $data){ $flg = true; } else{ $flg = false; $master->id = $id; } } # DBへ保存する $master->save(); return redirect('master'); }
主に、この部分の書き方があっているのかが分りません。
$data = Master::where('id', 'LIKE', $id); if($id === $data){ $flg = true; }
###試したこと
一応、8桁のランダムなIDがきちんと登録されているのは確認できましたが、生成した値が重複した時に「if($id === $data)」の部分で判断してくれているのかが分りません。
###補足情報(言語/FW/ツール等のバージョンなど)
Laravel5.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/16 10:52
2016/11/16 10:57
2016/11/16 11:00
2016/11/16 11:02