Laravel проверка наличия записи

новый для laravel, поэтому извините вопрос новичка, но как найти, существует ли запись?

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

что бы я сделал здесь, чтобы увидеть, если $user есть запись?

13 ответов


Это зависит от того, хотите ли вы работать с пользователем после этого или только проверить, существует ли он.

Если вы хотите использовать объект пользователя, если он существует:

$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
}

одно из лучших решений является использование firstOrNew или firstOrCreate метод.


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

Eloquent использует коллекции. См. следующую ссылку:https://laravel.com/docs/5.4/eloquent-collections


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

Это просто узнать, если есть какие-либо записи или нет

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

в контроллере

$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

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

вы можете использовать проверку laravel .

но этот код тоже хорош:

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

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

это проверит, существует ли конкретный адрес электронной почты в таблице:

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

проверка null внутри предотвращает возврат Laravel 404 сразу после завершения запроса.

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

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

    return $user;
}

похоже, что он запускает двойной запрос, если пользователь найден, но я не могу найти другого надежного решения.


фреймворк Laravel 5.6.26 в

чтобы найти существующую запись через первичный ключ (email или id )

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

затем

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

включить "использовать DB" и имя таблицы пользователь становится множественным числом, используя вышеуказанный запрос, как пользователь для пользователей


самые короткие работая варианты:

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

это простой код для проверки электронной почты или нет в базе данных


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