web-dev-qa-db-ja.com

Laravel レコードが存在するかどうかの確認

私はLaravelに慣れていません。初心者の質問はお許しくださいが、レコードが存在するかどうかはどうすればわかりますか?

$user = User::where('email', '=', Input::get('email'));

$userにレコードがあるかどうかを確認するために、ここで何ができますか?

190
Ben

あとでユーザーと作業するのか、それとも存在するのかを確認するだけなのかによって異なります。

ユーザーオブジェクトが存在する場合にそれを使用する場合

$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // user doesn't exist
}

そしてあなたがチェックしたいだけなら

if (User::where('email', '=', Input::get('email'))->count() > 0) {
   // user found
}

それとももっといい

if (User::where('email', '=', Input::get('email'))->exists()) {
   // user found
}
424
lukasgeiter

最善の解決策の1つは、firstOrNewまたはfirstOrCreateメソッドを使用することです。 ドキュメンテーション は両方についてより多くの詳細を持っています。

21
tapos ghosh
if($user->isEmpty()){
    // has no records
}

Eloquentはコレクションを使用しています。次のリンクを参照してください。 https://laravel.com/docs/5.4/eloquent-collections

8
Nabil
if (User::where('email', Input::get('email'))->exists()) {
    // exists
}
7
lucidlogic

Laravel 5.6.26v

主キー(電子メールまたはID)を介して既存のレコードを検索する

    $user = DB::table('users')->where('email',$email)->first();

それから

      if(!$user){
             //user is not found 
      }
      if($user){
             // user found 
      }

ユーザーにユーザーのような上記のクエリを使用して「use DB」とテーブル名userを複数にする

3
Nadeem Qasmi
if (User::where('email', '[email protected]')->first())
    // It exists
else
    // It does not exist

存在を確認するだけでよい場合は、first()ではなくcount()を使用してください。

first() より高速です count()はすべてのマッチを数えますが、単一のマッチをチェックします。

1
doncadavona
if ($u = User::where('email', '=', $value)->first())
{
   // do something with $u
   return 'exists';
} else {
  return 'nope';
}

try/catchで動作します

- > get()はまだ空の配列を返す

1
Julian

あなたのコントローラーで

$this->validate($request, [
        'email' => 'required|unique:user|email',
    ]); 

あなたの意見の中 - すでに存在しているメッセージを表示

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
1
Karthik

指定されたレコードIDがDBテーブルに存在するかどうかを確認するために(私自身のために)以下のメソッドを作成しました。

private function isModelRecordExist($model, $recordId)
{
    if (!$recordId) return false;

    $count = $model->where(['id' => $recordId])->count();

    return $count ? true : false;
}

// To Test
$recordId = 5;
$status = $this->isModelRecordExist( (new MyTestModel()), $recordId);

ホームそれは役立ちます!

0
rcadhikari

私は以下の方法が同じことを達成するための最も簡単な方法だと思います:

    $user = User::where('email', '=', $request->input('email'))->first();
    if ($user) {
       // user doesn't exist!
    }
0
ShuBham GuPta

ここに役立つと思うものへのリンクがあります https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/

0
GiftedX

laravel eloquentには、デフォルトのexists()メソッドがあります。以下の例を参照してください。

if(User::where('id', $user_id )->exists()){ // your code... }

0
$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // user doesn't exist
}

と書くことができます

if (User::where('email', '=', Input::get('email'))->first() === null) {
   // user doesn't exist
}

元の文で$ userを使用しているのであれば、一時変数を割り当てずにtrueまたはfalseを返します。

0
Chawker21

詳細検証を使用できます。

しかし、このコードも良いです:

$user = User::where('email',  $request->input('email'))->count();

if($user > 0)
{
   echo "There is data";
}
else
   echo "No data";
0
hamidteimouri

レコードがあるかどうかを知るのは簡単です。

$user = User::where('email', '=', Input::get('email'))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";
0
sunshine

これは、特定のメールアドレスがテーブルに存在するかどうかを確認します。

if (isset(User::where('email', Input::get('email'))->value('email')))
{
    // Input::get('email') exist in the table 
}
0
$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif
0
Mohammad Usman

とてもシンプル

     if (User::where('email', $request->input('email')->first())
       {
            // User exists
       } else{
            // User does not exist
       }

同じユーザーのパスワードを取得

$user = User::where('email', '=', $email)->first();
$user->password
dd($user);

ありがとう

0
Tlzdeveloper786

これは、要求されたEメールがユーザーテーブルに存在するかどうかを確認します。

if (User::where('email', $request->email)->exists()) {
   //email exists in user table
}
0
A. Zaman

nullステートメント内でifをチェックすることで、クエリが終了した直後にLaravelが404を返すことを防ぎます。

if ( User::find( $userId ) === null ) {

    return "user does not exist";
}
else {
    $user = User::find( $userId );

    return $user;
}

ユーザーが見つかった場合は二重照会を実行するようですが、他に信頼性のある解決策が見つからないようです。

0
Arthur Tarasov
$user = User::where('email', request('email')->first();
return (count($user) > 0 ? 'Email Exist' : 'Email Not Exist');
0
Mathesh Raj