Laravel select 哪里存在查询

Laravel select where exists query

我正在尝试在 laravel 中创建一个查询,该查询将检查用户名是否存在于 email 等于 $email 的记录中。我的 table 叫做用户。

我需要这个查询,因为当用户注册时,他们只用他们的电子邮件地址和密码注册并在以后添加用户名,所以我需要检查他们是否已经添加了用户名。

我已经查看了这里的文档:https://laravel.com/docs/5.4/queries 但无法理解我需要使用哪个查询,有人可以帮忙吗?

我想你想要的是$id = DB::table('user')->where('email', $email)->whereNotNull('username')->value('id');。这将 return 与该电子邮件匹配但没有用户名的用户 ID,或者它将 return 为空。那是你要的吗?如果不是,你能解释一下你的意思吗?

你可以这样做:

$user = User::where('email', $email)->first();

if (empty($user->username)) {
    // username is empty
} else {
    echo $user->username;
}

如果只需要检查是否存在而不读取用户数据,更高效的方法是:

$exists=User::where('email', $email)->whereNotNull('username')->exists();
if ($exists) {
    //User exists. No other data about it.
}

检查它并仅在存在时读取他的数据:

$user = User::where('email', $email)->whereNotNull('username')->first();

if (!$user) {
    //Not found with username, maybe exists without it
}

无论如何都要阅读它然后检查数据:

$user = User::where('email', $email)->first();

if (!$user->username) {
    //Does not exists even without username
}else if (!$user->username) {
    //Exists but without username
}else{
    //Exists with username
}