it-swarm.com.de

Laravel-Prüfung, wenn ein Datensatz vorhanden ist

Ich bin neu in Laravel. Bitte entschuldigen Sie die Neuling-Frage, aber wie finde ich, ob ein Datensatz existiert?

<?php

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

Was kann ich hier tun, um zu sehen, ob $user einen Datensatz hat?

180
Ben

Es hängt davon ab, ob Sie anschließend mit dem Benutzer arbeiten oder nur prüfen möchten, ob einer vorhanden ist.

Wenn Sie das Benutzerobjekt verwenden möchten, falls vorhanden:

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

Und wenn Sie nur prüfen wollen

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

Oder noch schöner

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

Eine der besten Lösungen ist die Verwendung der Methode firstOrNew oder firstOrCreate. Die Dokumentation enthält mehr Details zu beiden.

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

Eloquent verwendet Sammlungen. Siehe folgenden Link: https://laravel.com/docs/5.4/eloquent-collections

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

Laravel 5.6.26v 

den vorhandenen Datensatz über den Primärschlüssel (E-Mail oder ID) finden 

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

dann 

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

include "use DB" und Tabellenname user werden unter Verwendung der obigen Abfrage wie user an users zu Plural

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

Verwenden Sie first(), nicht count(), wenn Sie nur auf Existenz prüfen müssen.

first() ist schneller , weil es auf ein einzelnes Match prüft, während count() alle Matches zählt.

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

würde mit try/catch funktionieren 

-> get () würde immer noch ein leeres Array zurückgeben

1
Julian

Unten erstellte Methode (für mich), um zu überprüfen, ob die angegebene Datensatz-ID in der Db-Tabelle vorhanden ist oder nicht.

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);

Zuhause hilft es!

0
rcadhikari

Ich denke, unten ist der einfachste Weg, um dasselbe zu erreichen:

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

hier ist ein Link zu etwas, von dem ich denke, dass es helfen kann https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/

0
GiftedX

In laravel eloquent, hat default exists () Methode, siehe folgendes Beispiel.

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
}

kann als geschrieben werden 

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

Dies gibt true oder false zurück, ohne eine temporäre Variable zuzuweisen, wenn Sie $ user in der ursprünglichen Anweisung verwenden.

0
Chawker21

sie können Laravel-Validierung verwenden.

Aber dieser Code ist auch gut:

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

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

Es ist einfach zu erfahren, ob es Aufzeichnungen gibt oder nicht 

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

Dadurch wird geprüft, ob eine bestimmte E-Mail-Adresse in der Tabelle vorhanden ist:

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

Sehr einfach  

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

passwort des gleichen Benutzers erhalten als 

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

Vielen Dank

0
Tlzdeveloper786

Dies überprüft, ob die angeforderte E-Mail in der Benutzertabelle vorhanden ist:

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

Die Prüfung auf null in der Anweisung if hindert Laravel daran, 404 unmittelbar nach Beendigung der Abfrage zurückzugeben.

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

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

    return $user;
}

Es scheint, als würde eine doppelte Abfrage ausgeführt, wenn der Benutzer gefunden wird, aber ich kann keine andere zuverlässige Lösung finden.

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

In deinem Controller  

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

In Ihrer Ansicht - Bereits vorhandene Nachricht anzeigen  

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