質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.52%

laravel 会員登録時に10桁の数字を付与

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 420
退会済みユーザー

退会済みユーザー

laravelでregister機能を作っています。
userレコードを作成する際に、固有のIDとは違う10桁の数字を付与したいです。
一番最初のuserには1000000001、2番目のuserには1000000002という風に
1ずつ数値を増やしたいです。
viewにhiddenで値を持たせればよいでしょうか。
その際のcontrollerの処理がよくわかってないです。

<main class="main_auth">
  <div class="layout_main">
    <div class="area_auth area_register">
      <div class="img">
        <img src="{{ asset('img/logo_vertical.svg') }}">
      </div>
      <div class="text">
        <p class="ttl">{{ __('Make Account') }}</p>
      </div>
      <form method="POST" action="{{ route('register') }}" novalidate>
        @csrf
        <input type="hidden" name="type" value="normal">
        <ul class="list_register">
          <li>
            <article>
              <p class="ttl_list">
                {{ __('Or, Register With Form') }}
              </p>
              <div class="cnt">
                <small class="attention_required">
                  {{ __('Register account') }}
                </small>
                <ul class="list_form_auth">
                  <li class="required">
                    <div class="wrap_input">
                      <input id="email" type="email" class="@error('email') is-invalid @enderror" name="email" placeholder="{{ __('Enter E-Mail Address') }}"
                        value="{{ old('email') }}" required autocomplete="email" autofocus>
                      @error('email')
                        <span class="invalid-feedback" role="alert">
                          <strong>{{ $message }}</strong>
                        </span>
                      @enderror
                    </div>
                  </li>
                  <li class="required">
                    <div class="wrap_input">
                      <input id="password" type="password" class="@error('password') is-invalid @enderror" name="password" placeholder="{{ __('Enter Password') }}"
                        required autocomplete="new-password">
                      @error('password')
                        <span class="invalid-feedback" role="alert">
                          <strong>{{ $message }}</strong>
                        </span>
                      @enderror
                    </div>
                  </li>
                  <li class="required">
                    <div class="wrap_input">
                      <div class="wrap_input">
                        <input id="last_name" type="text" class="@error('last_name') is-invalid @enderror" name="last_name" placeholder="{{ __('Enter last name') }}"
                          value="{{ old('last_name') }}" required autocomplete="last_name">
                        @error('last_name')
                          <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                          </span>
                        @enderror
                      </div>
                      <span class="unit_min"></span>
                      <div class="wrap_input">
                        <input id="first_name" type="text" class="@error('first_name') is-invalid @enderror" name="first_name" placeholder="{{ __('Enter first name') }}"
                          value="{{ old('first_name') }}" required autocomplete="first_name">
                        @error('first_name')
                          <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                          </span>
                        @enderror
                      </div>
                    </div>
                  </li>
                </ul>
                <div class="btnarea_step">
                  <button type="submit" class="btn_">
                      {{ __('Register account') }}
                  </button>
                </div>
              </div>
            </article>
          </li>
        </ul>
      </form>
    </div>
  </div>
</main>
<?php

namespace App\Http\Controllers\Auth;

use App\Models\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/mypage';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'last_name' => 'required|string|max:255',
            'first_name' => 'required|string|max:255',
            'type' => 'required|string|string|max:20',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:10',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        $user = User::create([
            'last_name' => $data['last_name'],
            'first_name' => $data['first_name'],
            'email' => $data['email'],
            'type' => $data['type'],
            'password' => Hash::make($data['password']),
        ]);
    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/09/09 14:45

    解決したいなら、まともな質問にしてから言ってください。

    キャンセル

  • Kosuke_Shibuya

    2019/09/09 14:57

    cartiさん
    mtsさんが聞かなければ、結局誰かがが同じことを確認しなきゃいけないこと。
    自分より早くmtsさんが聞いているだけのことで、絡んでいるわけじゃないことです。
    めんどくセーとあなたが感じているのと同じように回答者はあなたに対しては、メンドクセー質問者と感じますよ。

    キャンセル

  • m.ts10806

    2019/09/09 14:57 編集

    いずれにしても要件が詰められてないか、全て提示されてないのでアドバイスを得るのは難しいと思いますよ。Laravelに限って考えなくてもできるか?という話もありますし。
    例えば1999999999の次はどうするの?とか。仕様・設計をどこまで考えてるのか分からないので回答しようがありません。決めるのは当然作る人なのでそれが決まらない事にはアドバイスも何もないですよ。
    人に絡むなとか言う前に完璧な質問をしてから言ってください。回答つかないのはたいてい質問要件が不明瞭か・丸投げ過ぎることからです。

    キャンセル

回答 1

check解決した方法

-5

   protected function create(array $data)
    {
        // 最後に登録されたユーザーの10桁の数値を取得
        $last_user = DB::table('users')->get()->last();
        if (isset($last_user)) {
            $max_number = $last_user->unique_number;
        // 1人目のユーザーの場合は1000000000を付与
        } else {
            $max_number = 1000000000;
        }
        $user = User::create([
            'last_name' => $data['last_name'],
            'first_name' => $data['first_name'],
            'last_name_kana' => $data['last_name_kana'],
            'first_name_kana' => $data['first_name_kana'],
            'email' => $data['email'],
            'type' => $data['type'],
            'password' => Hash::make($data['password']),
            'unique_number' => $max_number + 1
        ]);
    }

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/10 14:48

    @m.ts10806 さん
    失礼いたしました。10桁の数字を元に英数字混在のランダムの値を算出しようと考えています。

    キャンセル

  • 2019/09/10 14:53

    でも結局この自身の回答で解決と思ってるんですよね?
    詰めたいなら解決済み解除して要件を具体的に質問本文にするか
    追加要件なら別質問としてください。
    今までの応対の感じから余程きちんと質問を書かないとアドバイスは得られにくいとは思いますが。

    キャンセル

  • 2019/09/10 14:59

    @m.ts10806 さん
    この質問に関しては解決済みですので別で質問したいと思います。
    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる