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

Я новичок в Laravel. Прошу прощения за вопрос новичка, но как мне найти запись?

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

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

+213
источник поделиться
22 ответа

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

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

$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
}
+469
источник

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

+23
источник
другие ответы

Связанные вопросы


Похожие вопросы

if (User::where('email', Input::get('email'))->exists()) {
    // exists
}
+11
источник
if($user->isEmpty()){
    // has no records
}

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

+9
источник

Laravel 5.6.26v

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

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

затем

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

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

+3
источник
if (User::where('email', '[email protected]')->first())
    // It exists
else
    // It does not exist

Используйте first(), а не count() если вам нужно только проверить наличие.

first() быстрее, потому что он проверяет одно совпадение, тогда как count() считает все совпадения.

+3
источник

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

if (User::where('email', $request->email)->exists()) {
   //email exists in user table
}
+2
источник

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

$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
источник
if ($u = User::where('email', '=', $value)->first())
{
   // do something with $u
   return 'exists';
} else {
  return 'nope';
}

будет работать с try/catch

→ get() по-прежнему возвращает пустой массив

+1
источник

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

$user = User::where('email', '=', Input::get('email'))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";
0
источник
$user = User::where('email', request('email')->first();
return (count($user) > 0 ? 'Email Exist' : 'Email Not Exist');
0
источник

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

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

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

if($user > 0)
{
   echo "There is data";
}
else
   echo "No data";
0
источник

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

if (isset(User::where('email', Input::get('email'))->value('email')))
{
    // Input::get('email') exist in the table 
}
0
источник

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

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

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

    return $user;
}

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

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
}

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

0
источник

Я думаю, что ниже путь является самым простым способом достижения того же:

    $user = User::where('email', '=', $request->input('email'))->first();
    if ($user) {
       // user doesn't exist!
    }
0
источник

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

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
источник

вот ссылка на то, что, я думаю, может помочь https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/

0
источник
$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif
0
источник

В laravel eloquent есть метод default(), см. следующий пример.

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

0
источник

Кратчайшие рабочие варианты:

// 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();
-1
источник

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

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

-9
источник

Посмотрите другие вопросы по меткам или Задайте вопрос