it-swarm.com.ru

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

Я новичок в Laravel. Извините, пожалуйста, вопрос новичка, но как мне найти запись?

<?php

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

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

180
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
}
399
lukasgeiter

Одним из лучших решений является использование метода firstOrNew или firstOrCreate. документация содержит более подробную информацию об обоих.

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

Eloquent использует коллекции. См. Следующую ссылку: 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 

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

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

затем 

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

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

1
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

Созданный ниже метод (для себя), чтобы проверить, существует ли данный идентификатор записи в таблице БД или нет.

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

Это вернет true или false без назначения временной переменной, если это все, для чего вы используете $ user в исходной инструкции.

0
Chawker21

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

Но этот код также хорош:

$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
Syed Muzammil Ali

Очень просто  

     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

Это проверит, существует ли запрошенная электронная почта в пользовательской таблице:

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

В вашем контроллере  

$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
0
Karthik