前提・実現したいこと
php Laravel5.5でWebサイトを作成しており、
userテーブルの項目の値に応じてログイン時のエラーメッセージを
変える機能を実装しております。
以下3ステップを実現したいです。
①request内のemailと合致するuserテーブルのレコードを探す
②レコードがなかった場合、レコードの項目statusを3とする
③レコードがあった場合、レコードの項目statusごとに表示を出力する
(0もしくは2であればauth.failed_provisional、
9であればauth.failed_quit、そのほかはauth.failed)
該当のソースコード
protected function sendFailedLoginResponse(Request $request) { $user = new \stdClass; $user = User::where('email', $request->email)->first(); if (is_null($user)) { $user->status = 3; } if($user->status === 0 or 2){ throw ValidationException::withMessages([ $this->username() => [trans('auth.failed_provisional')], ]); }elseif($user->status === 9){ throw ValidationException::withMessages([ $this->username() => [trans('auth.failed_quit')], ]); }else{ throw ValidationException::withMessages([ $this->username() => [trans('auth.failed')], ]); }}
発生している問題・エラーメッセージ
$user->status = 3;のところで、
Creating default object from empty value
となります。
悩んでいること
まず、エラーの解消法を知りたいです。
その上で、
やりたいことは単純なのですが、
初心者のため、下記疑問があり、非常に効率が悪いです。
(googleで検索をかけても、結局限られた条件下での
対応がヒットするため、MECEな理解が難しいです。)
どなたか助けて頂けますと幸甚です。
・各変数の初期値をどう定義するのが正しいのかわからない
(今は$userが無定義だとエラーが発生するので、$user = new \stdClass;
調べた結果としていますが、本当に正しいかわかりません)
・空白の場合のチェックがis_null($user)でよいのかわからない
・変数が配列なのか要素なのかどうかでどう対応(初期値定義方法や空白
チェックの方法)が異なるのかわからない
回答2件
あなたの回答
tips
プレビュー