Чтобы начать, вам нужно выполнить findOrFail () или аналогичный по запросу $ user
Марк Бейкер
9
это не очень помогает
Бен
1
Тогда что это делает? Почему это не помогает? $user = User::where('email', '=', Input::get('email'));просто создает запрос $user, вам нужно выполнить этот запрос. findOrFail()это один из способов выполнения этого запроса. get()был бы другой путь, firstOrFail()другой
Марк Бейкер
2
Если предложение «действительно не помогает», попробуйте сказать, почему оно не помогает, потому что таким образом это означает, что мы знаем, как улучшить / изменить это предложение
не отвечая на вопрос, все же, очень полезные функции. Разница между ними заключается в том, что firstOrNew создает экземпляр вызываемой модели, в то время как firstOrCreate мгновенно сохраняет запрашиваемую модель, поэтому вам необходимо обновить изменения в модели firstOrCreate.
Gokigooooks
Да, или другой способ думать об этом, используйте firstOrCreate, если вы можете передать все атрибуты за один раз (используйте второй параметр), но firstOrNew, если вам потребуется дополнительная логика перед сохранением.
Да, но это не возвращение коллекции. Он возвращает один объект модели, так как вы предполагаете, что у каждого пользователя есть уникальный, emailпоэтому ->isEmpty()выдает ошибку.
user3574492
А что если я получу следующую ошибку:Call to a member function isEmpty() on null
Pathros
6
if(User::where('email','user@email.com')->first())// It existselse// It does not exist
Используйте first(), не count()если вам нужно только проверить на наличие.
first()это быстрее , потому что он проверяет наличие одного матча , тогда как count()подсчеты всех матчей.
if(!$user){//user is not found }if($user){// user found }
включить «использовать БД» и имя таблицы пользователь становится множественным числом, используя вышеуказанный запрос, как пользователь для пользователей
Laravel 6 или сверху: напишите имя таблицы, затем укажите условие условия where, например, где ('id', $ request-> id)
publicfunction store(Request $request){
$target = DB:: table('categories')->where('title', $request->name)->get()->first();if($target ===null){// do what ever you need to do
$cat =newCategory();
$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.');}}
// 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();
$user = User::where('email', '=', Input::get('email'));
просто создает запрос$user
, вам нужно выполнить этот запрос.findOrFail()
это один из способов выполнения этого запроса.get()
был бы другой путь,firstOrFail()
другойОтветы:
Это зависит от того, хотите ли вы впоследствии поработать с пользователем или только проверить, существует ли он.
Если вы хотите использовать объект пользователя, если он существует:
И если вы только хотите проверить
Или даже лучше
источник
exists()
против несуществующей записи, то выдает ошибку:Call to a member function exists() on null
first()
Одним из лучших решений является использование метода
firstOrNew
илиfirstOrCreate
. В документации есть более подробная информация об обоих.источник
источник
exists()
метод.Eloquent использует коллекции. Смотрите следующую ссылку: https://laravel.com/docs/5.4/eloquent-collections
источник
email
поэтому->isEmpty()
выдает ошибку.Call to a member function isEmpty() on null
Используйте
first()
, неcount()
если вам нужно только проверить на наличие.first()
это быстрее , потому что он проверяет наличие одного матча , тогда какcount()
подсчеты всех матчей.источник
В laravel eloquent есть метод default (), см. Следующий пример.
if(User::where('id', $user_id )->exists()){ // your code... }
источник
Laravel 5.6.26v
найти существующую запись по первичному ключу (email или id)
затем
включить «использовать БД» и имя таблицы пользователь становится множественным числом, используя вышеуказанный запрос, как пользователь для пользователей
источник
Это проверит, существует ли запрашиваемая электронная почта в пользовательской таблице:
источник
В вашем контроллере
По вашему мнению - Показать уже существующее сообщение
источник
required|unique:users,email|email
будет работать с try / catch
-> get () все равно вернет пустой массив
источник
источник
Это просто, чтобы узнать, есть ли какие-либо записи или нет
источник
источник
Вы можете использовать валидацию Laravel.
Но этот код также хорош:
источник
Это проверит, существует ли конкретный адрес электронной почты в таблице:
источник
Проверка
null
внутриif
оператора не позволяет Laravel возвращать 404 сразу после завершения запроса.Кажется, что он запускает двойной запрос, если пользователь найден, но я не могу найти другое надежное решение.
источник
find
наwhere
.User::where(id, 1)->first()
можно записать как
Это вернет true или false без назначения временной переменной, если это все, для чего вы используете $ user в исходной инструкции.
источник
Я думаю, что нижеследующий способ - самый простой способ достижения того же самого
источник
Созданный ниже метод (для меня), чтобы проверить, существует ли данный идентификатор записи в таблице БД или нет.
Дом помогает!
источник
Самый простой способ сделать
источник
Laravel 6 или сверху: напишите имя таблицы, затем укажите условие условия where, например, где ('id', $ request-> id)
источник
Эффективный способ проверить, существует ли запись, вы должны использовать метод is_null для проверки по запросу.
Код ниже может быть полезным:
источник
Кратчайшие рабочие варианты:
источник
Вот ссылка на что-то, что, я думаю, может помочь https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/
источник
это простой код для проверки наличия или отсутствия электронной почты в базе данных
источник