Я новичок в Laravel. Прошу прощения за вопрос новичка, но как мне найти запись?
$user = User::where('email', '=', Input::get('email'));
Что я могу сделать здесь, чтобы увидеть, есть ли у $user
запись?
Я новичок в Laravel. Прошу прощения за вопрос новичка, но как мне найти запись?
$user = User::where('email', '=', Input::get('email'));
Что я могу сделать здесь, чтобы увидеть, есть ли у $user
запись?
Это зависит от того, хотите ли вы работать с пользователем или только проверить, существует ли он.
Если вы хотите использовать пользовательский объект, если он существует:
$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::where('email', Input::get('email'))->exists()) {
// exists
}
if($user->isEmpty()){
// has no records
}
Eloquent использует коллекции. Смотрите следующую ссылку: https://laravel.com/docs/5.4/eloquent-collections
Laravel 5.6.26v
найти существующую запись по первичному ключу (email или id)
$user = DB::table('users')->where('email',$email)->first();
затем
if(!$user){
//user is not found
}
if($user){
// user found
}
включить "использовать БД" и имя таблицы пользователь становится множественным числом, используя приведенный выше запрос, как пользователь для пользователей
if (User::where('email', '[email protected]')->first())
// It exists
else
// It does not exist
Используйте first()
, а не count()
если вам нужно только проверить наличие.
first()
быстрее, потому что он проверяет одно совпадение, тогда как count()
считает все совпадения.
Это проверит, существует ли запрашиваемая электронная почта в пользовательской таблице:
if (User::where('email', $request->email)->exists()) {
//email exists in user table
}
В вашем контроллере
$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
if ($u = User::where('email', '=', $value)->first())
{
// do something with $u
return 'exists';
} else {
return 'nope';
}
будет работать с try/catch
→ get() по-прежнему возвращает пустой массив
Проще узнать, есть ли какие-либо записи или нет
$user = User::where('email', '=', Input::get('email'))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";
$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
в операторе if
позволяет Laravel возвращать 404 сразу после завершения запроса.
if ( User::find( $userId ) === null ) {
return "user does not exist";
}
else {
$user = User::find( $userId );
return $user;
}
Кажется, что он запускает двойной запрос, если пользователь найден, но я не могу найти другого надежного решения.
$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 в исходной инструкции.
Я думаю, что ниже путь является самым простым способом достижения того же:
$user = User::where('email', '=', $request->input('email'))->first();
if ($user) {
// user doesn't exist!
}
Созданный ниже метод (для себя), чтобы проверить, существует ли данный идентификатор записи в таблице БД или нет.
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);
Дом помогает!
вот ссылка на то, что, я думаю, может помочь https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/
$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif
В laravel eloquent есть метод default(), см. следующий пример.
if(User::where('id', $user_id )->exists()){
// your code...
}
Кратчайшие рабочие варианты:
// 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'; }