Laravel Eloquent:判断数据是否存在 0 个改进

问题

如何检查表中是否存在一条数据?

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

我应该怎么做才能看到 $user 有一个记录?

回答

这取决于您以后是否继续使用 $user ,或者只检查是否存在用户记录。

如果你想去看 $user 是否有数据:

$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // 没记录
}

如果你只是想检查有没有

if (User::where('email', '=', Input::get('email'))->count() > 0) {
   // 有记录
}

有更好的方法

if (User::where('email', '=', Input::get('email'))->exists()) {
   // 有记录
}
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 5

经验源于历练 :+1:

10个月前 评论

isEmpty() get查询时可使用

10个月前 评论
张雷

刚学编程的时候说用COUNT速度快,一直用到现在~

10个月前 评论

这条不适用,慎用exitst(),
最好还是用count(),我用了一次,后来慢sql日志上全是exists,全部改成count了
以下是slowlog中的一条,如果用count()就会好很多

select exists(select * from `super_help_join` where (`super_help_id` = '6' and `user_id` = 129220) and `join_id` = 0 and `super_help_join`.`deleted_at` = 0) as `exists`;

# User@Host: aaa[bbb] @  [127.8.8.8]  Id: 1248754
# Query_time: 4.302264  Lock_time: 0.000027 Rows_sent: 0  Rows_examined: 151334
6个月前 评论
haaid

blank($user) 也不错

1个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!