Laravel Checking If a Record Exists

PhpLaravelLaravel 5EloquentConditional Statements

Php Problem Overview


I am new to Laravel. How do I find if a record exists?

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

What can I do here to see if $user has a record?

Php Solutions


Solution 1 - Php

It depends if you want to work with the user afterwards or only check if one exists.

If you want to use the user object if it exists:

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

And if you only want to check

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

Or even nicer

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

Solution 2 - Php

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

Solution 3 - Php

In laravel eloquent, has default exists() method, refer followed example.

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

Solution 4 - Php

One of the best solution is to use the firstOrNew or firstOrCreate method. The documentation has more details on both.

Solution 5 - Php

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

Eloquent uses collections. See the following link: https://laravel.com/docs/5.4/eloquent-collections

Solution 6 - Php

Laravel 5.6.26v

to find the existing record through primary key ( email or id )

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

then

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

include " use DB " and table name user become plural using the above query like user to users

Solution 7 - Php

if (User::where('email', 'user@email.com')->first()) {
    // It exists
} else {
    // It does not exist
}

Use first(), not count() if you only need to check for existence.

first() is faster because it checks for a single match whereas count() counts all matches.

Solution 8 - Php

This will check if requested email exist in the user table:

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

Solution 9 - Php

In your Controller

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

In your View - Display Already Exist Message

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

Solution 10 - Php

I solved this, using empty() function:

$user = User::where('email', Input::get('email'))->get()->first();
//for example:
if (!empty($user))
    User::destroy($user->id);

Solution 11 - Php

It is a bit late but it might help someone who is trying to use User::find()->exists() for record existence as Laravel shows different behavior for find() and where() methods. Considering email as your primary key let's examine the situation.

$result = User::find($email)->exists();

If a user record with that email exists then it will return true. However the confusing thing is that if no user with that email exists then it will throw an error. i.e

Call to a member function exists() on null.

But the case is different for where() thing.

$result = User::where("email", $email)->exists();

The above clause will give true if record exists and false if record doesn't exists. So always try to use where() for record existence and not find() to avoid NULL error.

Solution 12 - Php

Checking for null within if statement prevents Laravel from returning 404 immediately after the query is over.

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

    return $user;
}

It seems like it runs double query if the user is found, but I can't seem to find any other reliable solution.

Solution 13 - Php

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

would work with try/catch

->get() would still return an empty array

Solution 14 - Php

$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif

Solution 15 - Php

Simple, comfortable and understandable with Validator

class CustomerController extends Controller
{
    public function register(Request $request)
    {

        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:customers',
            'phone' => 'required|string|max:255|unique:customers',
            'password' => 'required|string|min:6|confirmed',
        ]);

        if ($validator->fails()) {
            return response(['errors' => $validator->errors()->all()], 422);
        }

Solution 16 - Php

you have seen plenty of solution, but magical checking syntax can be like,

$model = App\Flight::findOrFail(1);

$model = App\Flight::where('legs', '>', 100)->firstOrFail();

it will automatically raise an exception with response 404, when not found any related models Sometimes you may wish to throw an exception if a model is not found. This is particularly useful in routes or controllers. The fingernail and firstOrFail methods will retrieve the first result of the query; however, if no result is found, an Illuminate\Database\Eloquent\ModelNotFoundException will be thrown.

Ref: https://laravel.com/docs/5.8/eloquent#retrieving-single-models

Solution 17 - Php

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

Solution 18 - Php

You can use laravel validation if you want to insert a unique record:

$validated = $request->validate([
    'title' => 'required|unique:usersTable,emailAddress|max:255',
]);

But also you can use these ways:

1:

if (User::where('email',  $request->email)->exists())
{
  // object exists
} else {
  // object not found
}

2:

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

if ($user)
{
  // object exists
} else {
  // object not found
}

3:

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

if ($user->isNotEmpty())
{
  // object exists
} else {
  // object not found
}

4:

$user = User::where('email',  $request->email)->firstOrCreate([
      'email' => 'email'
],$request->all());

Solution 19 - Php

This will check if particular email address exist in the table:

if (isset(User::where('email', Input::get('email'))->value('email')))
{
    // Input::get('email') exist in the table 
}

Solution 20 - Php

Shortest working options:

// if you need to do something with the user 
if ($user = User::whereEmail(Input::get('email'))->first()) {
   
    // ...

}

// otherwise
$userExists = User::whereEmail(Input::get('email'))->exists();

Solution 21 - Php

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

can be written as

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

This will return true or false without assigning a temporary variable if that is all you are using $user for in the original statement.

Solution 22 - Php

I think below way is the simplest way to achieving same :

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

Solution 23 - Php

Created below method (for myself) to check if the given record id exists on Db table or not.

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

Home It helps!

Solution 24 - Php

The Easiest Way to do

    public function update(Request $request, $id)
{


    $coupon = Coupon::where('name','=',$request->name)->first(); 
    
    if($coupon->id != $id){
        $validatedData = $request->validate([
            'discount' => 'required',   
            'name' => 'required|unique:coupons|max:255',      
        ]);
    }
   

    $requestData = $request->all();
    $coupon = Coupon::findOrFail($id);
    $coupon->update($requestData);
    return redirect('admin/coupons')->with('flash_message', 'Coupon updated!');
}

Solution 25 - Php

Laravel 6 or on the top: Write the table name, then give where clause condition for instance where('id', $request->id)

 public function store(Request $request)
    {
 
        $target = DB:: table('categories')
                ->where('title', $request->name)
                ->get()->first();
        if ($target === null) { // do what ever you need to do
            $cat = new Category();
            $cat->title = $request->input('name');
            $cat->parent_id = $request->input('parent_id');
            $cat->user_id=auth()->user()->id;
            $cat->save();
            return redirect(route('cats.app'))->with('success', 'App created successfully.');
    
        }else{ // match found 
            return redirect(route('cats.app'))->with('error', 'App already exists.');
        }
        
    }

Solution 26 - Php

If you want to insert a record in the database if a record with the same email not exists then you can do as follows:

$user = User::updateOrCreate(
    ['email' => Input::get('email')],
    ['first_name' => 'Test', 'last_name' => 'Test']
);

The updateOrCreate method's first argument lists the column(s) that uniquely identify records within the associated table while the second argument consists of the values to insert or update.

You can check out the docs here: Laravel upserts doc

Solution 27 - Php

$userCnt     = User::where("id",1)->count();
if( $userCnt ==0 ){
     //////////record not exists 
}else{
      //////////record exists 
}

Note :: Where condition according your requirements.

Solution 28 - Php

Solution 29 - Php

The efficient way to check if the record exists you must use is_null method to check against the query.

The code below might be helpful:

$user = User::where('email', '=', Input::get('email'));
if(is_null($user)){
 //user does not exist...
}else{
 //user exists...
}

Solution 30 - Php

It's simple to get to know if there are any records or not

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

Solution 31 - Php

this is simple code to check email is exist or not in database

$data = $request->all();
$user = DB::table('User')->pluck('email')->toArray();
if(in_array($user,$data['email']))
{
echo 'existed email';
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBenView Question on Stackoverflow
Solution 1 - PhplukasgeiterView Answer on Stackoverflow
Solution 2 - PhplucidlogicView Answer on Stackoverflow
Solution 3 - PhpDhanushka UdayangaView Answer on Stackoverflow
Solution 4 - Phptapos ghoshView Answer on Stackoverflow
Solution 5 - PhpNabilView Answer on Stackoverflow
Solution 6 - PhpNadeem QasmiView Answer on Stackoverflow
Solution 7 - PhpdoncadavonaView Answer on Stackoverflow
Solution 8 - PhpA. ZamanView Answer on Stackoverflow
Solution 9 - PhpKarthikView Answer on Stackoverflow
Solution 10 - PhpArian TronView Answer on Stackoverflow
Solution 11 - PhpSharryyView Answer on Stackoverflow
Solution 12 - PhpArthur TarasovView Answer on Stackoverflow
Solution 13 - PhpJulianView Answer on Stackoverflow
Solution 14 - PhpBasharmalView Answer on Stackoverflow
Solution 15 - PhpNijat AliyevView Answer on Stackoverflow
Solution 16 - PhpKishor PantView Answer on Stackoverflow
Solution 17 - PhpMathesh RajView Answer on Stackoverflow
Solution 18 - PhpHamid TeimouriView Answer on Stackoverflow
Solution 19 - PhpSyed Muzammil AliView Answer on Stackoverflow
Solution 20 - PhpwheelmakerView Answer on Stackoverflow
Solution 21 - PhpChawker21View Answer on Stackoverflow
Solution 22 - PhpShuBham GuPtaView Answer on Stackoverflow
Solution 23 - Phprc.adhikariView Answer on Stackoverflow
Solution 24 - PhpRahul JatView Answer on Stackoverflow
Solution 25 - PhpRafiqView Answer on Stackoverflow
Solution 26 - PhpAbdullah ShakirView Answer on Stackoverflow
Solution 27 - PhpSuresh Kumar KumawatView Answer on Stackoverflow
Solution 28 - PhpGiftedXView Answer on Stackoverflow
Solution 29 - PhpLawrence E BosumbeView Answer on Stackoverflow
Solution 30 - PhpRashi GoyalView Answer on Stackoverflow
Solution 31 - Phpram pratap singhView Answer on Stackoverflow