Laravel检查是否存在记录

时间:2014-11-23 22:24:42

标签: php laravel laravel-5 eloquent conditional

我是Laravel的新手。请原谅新手问题,但如何查找是否存在记录?

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

我可以在此处查看$user是否有记录?

29 个答案:

答案 0 :(得分:429)

这取决于您是否希望之后与用户合作或仅检查是否存在。

如果您想使用用户对象(如果存在):

$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
}

答案 1 :(得分:21)

最好的解决方案之一是使用firstOrNewfirstOrCreate方法。 documentation有更多详细信息。

答案 2 :(得分:8)

if($user->isEmpty()){
    // has no records
}

Eloquent使用集合。 请参阅以下链接:https://laravel.com/docs/5.4/eloquent-collections

答案 3 :(得分:7)

if (User::where('email', Input::get('email'))->exists()) {
    // exists
}

答案 4 :(得分:3)

Laravel 5.6.26v

通过主键(电子邮件或id)查找现有记录

      if(!$user){
             //user is not found 
      }
      if($user){
             // user found 
      }

然后

steps()

包括“使用数据库”,表名用户使用上述查询像用户对用户一样变成复数

答案 5 :(得分:1)

if ($u = User::where('email', '=', $value)->first())
{
   // do something with $u
   return 'exists';
} else {
  return 'nope';
}

可以使用try / catch

-> get()仍将返回一个空数组

答案 6 :(得分:1)

我使用 empty() 函数解决了这个问题:

$user = User::where('email', Input::get('email'))->get()->first();
//for example:
if (!empty($user))
    User::destroy($user->id);

答案 7 :(得分:1)

在laravel雄辩中,具有默认的exist()方法,请参见后面的示例。

union all

答案 8 :(得分:1)

if (User::where('email', 'user@email.com')->first())
    // It exists
else
    // It does not exist

如果只需要检查是否存在,请使用first(),而不要使用count()

first() 更快,因为它检查单个匹配项,而count()则计算所有匹配项。

答案 9 :(得分:1)

在您的控制器中

     $city=City::with('locations')->findOrFail($id);
    // if $id does not exit how to handle error 
    // how to show message form asses/lang/en/somefile.php to user.
    // like "please try again"
   return view('admin.city.viewCity',compact('city'));

在您的视图中 - 显示已存在的消息

$this->validate($request, [
        'email' => 'required|unique:user|email',
    ]); 

答案 10 :(得分:0)

这将检查用户表中是否存在请求的电子邮件:

if (User::where('email', $request->email)->exists()) {
   //email exists in user table
}

答案 11 :(得分:0)

如果您想在数据库中插入一条记录,如果不存在具有相同电子邮件的记录,那么您可以执行以下操作:

$user = User::updateOrCreate(
    ['email' => Input::get('email')],
    ['first_name' => 'Test', 'last_name' => 'Test']
);

updateOrCreate 方法的第一个参数列出了唯一标识关联表中记录的列,而第二个参数包含要插入或更新的值。

您可以在此处查看文档:{​​{3}}

答案 12 :(得分:0)

很容易知道是否有任何记录

$user = User::where('email', '=', Input::get('email'))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";

答案 13 :(得分:0)

使用 Validator

简单,舒适且易于理解
class CustomerController extends Controller
{
    public function register(Request $request)
    {

        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:customers',
            'phone' => 'required|string|max:255|unique:customers',
            'password' => 'required|string|min:6|confirmed',
        ]);

        if ($validator->fails()) {
            return response(['errors' => $validator->errors()->all()], 422);
        }

答案 14 :(得分:0)

检查记录是否存在的有效方法,必须使用is_null方法来检查查询。

以下代码可能会有所帮助:

$user = User::where('email', '=', Input::get('email'));
if(is_null($user)){
 //user does not exist...
}else{
 //user exists...
}

答案 15 :(得分:0)

Laravel 6或顶部:编写表名称,然后给出实例 where('id',$ request-> id)的where子句条件

 public function store(Request $request)
    {

        $target = DB:: table('categories')
                ->where('title', $request->name)
                ->get()->first();
        if ($target === null) { // do what ever you need to do
            $cat = new Category();
            $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.');
        }

    }

答案 16 :(得分:0)

最简单的方法

    public function update(Request $request, $id)
{


    $coupon = Coupon::where('name','=',$request->name)->first(); 

    if($coupon->id != $id){
        $validatedData = $request->validate([
            'discount' => 'required',   
            'name' => 'required|unique:coupons|max:255',      
        ]);
    }


    $requestData = $request->all();
    $coupon = Coupon::findOrFail($id);
    $coupon->update($requestData);
    return redirect('admin/coupons')->with('flash_message', 'Coupon updated!');
}

答案 17 :(得分:0)

$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif

答案 18 :(得分:0)

答案 19 :(得分:0)

这将检查表中是否存在特定的电子邮件地址:

if (isset(User::where('email', Input::get('email'))->value('email')))
{
    // Input::get('email') exist in the table 
}

答案 20 :(得分:0)

(为我自己)创建以下方法,以检查给定的记录ID是否在Db表上。

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);

首页,它有帮助!

答案 21 :(得分:0)

我认为以下方法是实现相同目标的最简单方法:

    $user = User::where('email', '=', $request->input('email'))->first();
    if ($user) {
       // user doesn't exist!
    }

答案 22 :(得分:0)

$user = User::where('email', request('email')->first();
return (count($user) > 0 ? 'Email Exist' : 'Email Not Exist');

答案 23 :(得分:0)

$JsBeforeDayMultipleHalfHour = <<<EOF
    function(date){
        var dates = new Array();
        dates = {$thirty_minutes_dates};
        var year = date.getFullYear(), month = date.getMonth(), day = date.getDate();
        for (var i=0; i < dates.length; ++i) {
            if (year == parseInt(dates[i][0]) && month == parseInt(dates[i][1]) - 1 &&  day == parseInt(dates[i][2])) {
                return {classes: 'bold-text'};
            }
        return [false, ''];
        }
     }
EOF;

可以写为

$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // user doesn't exist
}

如果原始语句中使用的是$ user,那么这将返回true或false而不分配临时变量。

答案 24 :(得分:0)

你可以使用laravel验证。

但是这段代码也很好:

$user = User::where('email',  $request->input('email'))->count();

if($user > 0)
{
   echo "There is data";
}
else
   echo "No data";

答案 25 :(得分:0)

null语句中检查if可以防止Laravel在查询结束后立即返回404。

if ( User::find( $userId ) === null ) {

    return "user does not exist";
}
else {
    $user = User::find( $userId );

    return $user;
}

如果找到了用户,它似乎会运行两次查询,但是我似乎找不到其他可靠的解决方案。

答案 26 :(得分:-1)

非常简单

     if (User::where('email', $request->input('email')->first())
       {
            // User exists
       } else{
            // User does not exist
       }

获取与

相同的用户密码
$user = User::where('email', '=', $email)->first();
$user->password
dd($user);

谢谢

答案 27 :(得分:-1)

最短的工作选项:

A

答案 28 :(得分:-9)

这是检查电子邮件是否存在于数据库中的简单代码


    $data = $request->all();
    $user = DB::table('User')->pluck('email')->toArray();
    if(in_array($user,$data['email']))
    {
    echo 'existed email';
    }