【问题标题】:How to only get users of a certain age based on Date of Birth如何根据出生日期仅获取特定年龄的用户
【发布时间】:2018-07-19 17:20:40
【问题描述】:

我有一个带有获取年龄方法的用户模型。

public function age() {
      return $this->date_of_birth->diffInYears(\Carbon\Carbon::now());
    }

效果很好。

在控制器中,我试图让所有超过 16 岁的用户,但问题是用户不需要在注册时输入他们的出生日期,只需要稍后在应用程序中输入。如何检索特定年龄的所有用户的记录,并折扣空条目。

我试过了

public function index(){

      $users = User::whereNotNull('date_of_birth')->take(10);

      if(!empty($users)){
        $validusers = $users->age();
      }


      return view('egistrations.index', compact('validusers'));
    }

但我得到以下错误

调用未定义的方法 Illuminate\Database\Query\Builder::age()

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:
    public function index(){
    
        $users_with_age = User::whereNotNull('date_of_birth')
                    ->take(10)
                    ->get()
                    ->each(function ($user) {
                        $user->age = $user->age();
                    });
        return view('egistrations.index', compact('users_with_age'));
    }
    

    【讨论】:

      【解决方案2】:

      公共函数索引(){

        $users = User::whereNotNull('date_of_birth')->take(10);
      
        if(!empty($users)){
          $validusers = $users->get();
        }
      
      
        return view('egistrations.index', compact('validusers'));
      }
      

      你需要像上面那样使用 get() 或者你可以使用 all()

      【讨论】:

        【解决方案3】:

        您忘记在查询中添加 get()

        $users = User::where('date_of_birth','!=',NULL)->take(10)->get();
        

        【讨论】:

          【解决方案4】:

          你已经使用map()来使用$user->age

          public function index(){
          
                $users = User::whereNotNull('date_of_birth')->take(10)->get();
          
                if(!empty($users)){
          
                    $validusers = $users->map(function($user){
                       return  $user['age'] = $user->age();
                   });
          
                }
          
          
                return view('egistrations.index', compact('validusers'));
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-08-16
            • 2013-10-31
            • 1970-01-01
            • 2013-08-27
            • 2019-01-29
            • 2014-04-04
            • 2023-03-05
            相关资源
            最近更新 更多