我有一个User模型,该模型具有一种获取年龄的方法。
console.log(new Intl.NumberFormat('en-US', { maximumSignificantDigits: 4}).format(1 ));
console.log(new Intl.NumberFormat('en-US', { maximumSignificantDigits: 4}).format(1.23 ));
console.log(new Intl.NumberFormat('en-US', { maximumSignificantDigits: 4}).format(1.23456 ));
那很好。
在控制器中,我试图使所有用户都超过16岁,但是问题是用户不需要在注册时输入自己的DOB,只需稍后在应用程序中输入即可。如何检索特定年龄的所有用户的记录,并为空条目打折。
我已经尝试过了
public function age() {
return $this->date_of_birth->diffInYears(\Carbon\Carbon::now());
}
但是我收到以下错误消息
调用未定义的方法Illuminate \ Database \ Query \ Builder :: age()
答案 0 :(得分:0)
公共功能index(){
$users = User::whereNotNull('date_of_birth')->take(10);
if(!empty($users)){
$validusers = $users->get();
}
return view('egistrations.index', compact('validusers'));
}
您需要如上所述使用 get(),也可以使用 all()
答案 1 :(得分:0)
您忘记在查询中添加 get()
$users = User::where('date_of_birth','!=',NULL)->take(10)->get();
答案 2 :(得分:0)
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'));
}
答案 3 :(得分:0)
您已经使用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'));
}