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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

694閲覧

【laravel】会員登録でUsersテーブルにメールアドレスとtokenのみを入力して保存したい

ra-men_love

総合スコア6

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/07/23 05:48

編集2021/07/23 05:55

実現したいこと

現在、会員登録システムを作っています。
その仮登録の過程で、まずメールアドレスを入力してもらい、emailtoken(本人確認のためのもの)を作成し、メールアドレスとemailtokenのみをDB上に収納して、他の部分は空の状態にしたいと考えています。

起きている問題

メールアドレスとemailtokenのみをDB上に収納するため、他の部分が入らずエラーを吐いてしまいます。
前回作ったアプリ上ではうまくいったのですが、なぜか今回はうまくいきません。

ソースコード

User.php

<?php namespace App; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Str; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function preregister($email){ $user = new User; $user->email = $email; $user->email_verify_token = Str::random(40); $user->save(); } }

web.php

//会員登録 Route::view('/register', 'preregister')->name('preregister'); Route::post('/register', 'UserController@createMailToken');

UserController.php

//新規登録時の登録メールアドレスの認証(emaitoken作成) public function createMailToken(Request $request){ //Validation部分 $rule = [ 'email' => 'required|max:500|unique:users,email', ]; $messages = [ 'email.unique' => 'すでに存在しているメールアドレスです。', 'email.required' => 'メールアドレスは必ず入力してください。', 'email.max' => 'メールアドレスは500文字以内で入力してください。' ]; $validator = Validator::make($request->all(), $rule, $messages); if ($validator->fails()) { return redirect()->route('preregister') ->withErrors($validator) ->withInput(); } //仮登録のためにemailtokenの発行・DB内にemail保存 User::preregister($request->get('email')); //セッション内にemailを保存 $request->session()->put('email', $request->input('email')); return redirect()->route('mail_sent'); }

試したこと

DBへの収納を行う際に、nullを設定してみましたが、DBにはnullを入力できないとエラーを吐きました。
そのため、テーブル定義でnot null制約を解除しようと思いましたが、
composer.pharでcomposer使用しているため、composerを使用する時は、htdocs/thing_adminでdoctrine/dbal packageをインストールしています。
しかし、artisanを行うときは、hydocs/thing_admin/thingでしか行えないため、doctrine/dbal packageartisanがインストールされておらず、カラム変更が出来ないと表示されました。

全てnullを入れた場合
イメージ説明
空にした場合
![イメージ説明

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

usersテーブルにデフォルト値を入力しました。

投稿2021/07/23 11:29

ra-men_love

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問