Ben*_*Ben 218 php conditional laravel eloquent laravel-5
我是Laravel的新手.请原谅新手问题,但如何查找记录是否存在?
$user = User::where('email', '=', Input::get('email'));
Run Code Online (Sandbox Code Playgroud)
我该怎么办才能看到是否$user有记录?
luk*_*ter 493
这取决于您是否希望之后与用户合作或仅检查是否存在.
如果要使用用户对象(如果存在):
$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
// user doesn't exist
}
Run Code Online (Sandbox Code Playgroud)
如果你只想检查
if (User::where('email', '=', Input::get('email'))->count() > 0) {
// user found
}
Run Code Online (Sandbox Code Playgroud)
甚至更好
if (User::where('email', '=', Input::get('email'))->exists()) {
// user found
}
Run Code Online (Sandbox Code Playgroud)
luc*_*gic 13
if (User::where('email', Input::get('email'))->exists()) {
// exists
}
Run Code Online (Sandbox Code Playgroud)
小智 11
虽然有点晚了,但它可能会帮助那些尝试使用User::find()->exists()记录存在的人,因为 Laravel 显示了不同的行为find()和where()方法。将电子邮件视为您的主键,让我们检查一下情况。
$result = User::find($email)->exists();
Run Code Online (Sandbox Code Playgroud)
如果包含该电子邮件的用户记录存在,则它将返回true。然而,令人困惑的是,如果不存在具有该电子邮件的用户,那么它将引发错误。IE
Call to a member function exists() on null.
Run Code Online (Sandbox Code Playgroud)
但情况有所不同where()。
$result = User::where("email", $email)->exists();
Run Code Online (Sandbox Code Playgroud)
上面的子句将给出true记录是否存在以及false记录是否不存在。所以总是尝试使用where()记录存在而不是find()避免NULL错误。
小智 10
if($user->isEmpty()){
// has no records
}
Run Code Online (Sandbox Code Playgroud)
Eloquent使用集合.请参阅以下链接:https://laravel.com/docs/5.4/eloquent-collections
小智 10
在 laravel eloquent 中,有默认的 exists() 方法,参考后面的例子。
if(User::where('id', $user_id )->exists()){
// your code...
}
Laravel 5.6.26v
通过主键( email 或 id )查找现有记录
$user = DB::table('users')->where('email',$email)->first();
Run Code Online (Sandbox Code Playgroud)
然后
if(!$user){
//user is not found
}
if($user){
// user found
}
Run Code Online (Sandbox Code Playgroud)
包括“使用 DB”和表名 user 使用上述查询变成复数,如 user to users
小智 6
这将检查用户表中是否存在请求的电子邮件:
if (User::where('email', $request->email)->exists()) {
//email exists in user table
}
Run Code Online (Sandbox Code Playgroud)
if (User::where('email', 'user@email.com')->first())
// It exists
else
// It does not exist
Run Code Online (Sandbox Code Playgroud)
使用first(),count()如果仅需要检查是否存在,则不使用。
first()是更快,因为它会检查一个匹配而count()计数的所有比赛。