Hi用户通过存储在数据库中的表单添加他们的DOB,
我想计算数据库中存储日期的年龄,格式为Y-m-d,
我的问题是:
如何计算年龄?
在逻辑控制器或模型中放置逻辑?
如何以“m-d-Y”格式传递视图中存储的日期
如何传递视图中年龄的逻辑结果。
我在我的模型中使用如下的内容是对的吗?
这是控制器:
public function index() {
$profile = User::find($this->userid())->profiledetailsHasOne; //This has Dob field
return view('profile.index',['profile' => $profile ]);
}
这是我的模特:
public function getAge(){
$this->birthdate->diff($this->attributes['dob'])
->format('%y years, %m months and %d days');
}
这是我的观点:
<tr>
<th>Age</th>
<td>{{$profile->getAge()}}</td>
</tr>
这是对的吗?我收到错误如下
Call to a member function diff() on null
答案 0 :(得分:24)
日期可以是Carbon的实例,它提供了各种有用的方法。
在您的模型中,导入Carbon类:
use Carbon\Carbon;
定义一个访问者:
/**
* Accessor for Age.
*/
public function getAgeAttribute()
{
return Carbon::parse($this->attributes['birthdate'])->age;
}
然后,您可以将age
称为常规属性。例如,在刀片视图中:
<p>{{ $user->age }} years</p>
答案 1 :(得分:7)
直接在您的视图中显示:
\Carbon\Carbon::parse($user->birth)->diff(\Carbon\Carbon::now())->format('%y years, %m months and %d days');
答案 2 :(得分:2)
使用Carbon in build计算Laravel的年龄最好。 在Laravel中返回的日期已经是Carbon格式。
此逻辑应作为模型的默认getter进入模型。
public function getAge(){
$this->birthdate->diff(Carbon::now())
->format('%y years, %m months and %d days');
}
这将导致23年,6个月和26天&#34;
查看http://carbon.nesbot.com/docs/文档,了解您可以使用它完成的所有有趣内容。
假设您在视图中使用模型,并且因为您应该在该模型中创建getAge()
函数。
您可以在视图中将您的模型称为$user->getAge()
答案 3 :(得分:1)
感谢您的所有建议。
碳很容易和令人敬畏。
我在模型中添加了这段代码:
module/endmodule
答案 4 :(得分:1)
我在模型中添加了以下代码:
default: &default
adapter: postgresql
encoding: unicode
development:
<<: *default
database: app_development
test:
<<: *default
database: app_test
production:
<<: *default
database: app_production
username: app
password: <%= ENV['APP_DATABASE_PASSWORD'] %>
答案 5 :(得分:1)
在 Laravel 7 中:
numOfRows = TERMINAL_getNumOfRows(); // somehow it gives me 0 as answer when I actually return the number before I send data
rx_byte = USART3->RDR;
if (rx_byte == '\n')
{
if (rows==numOfRows)
{
*(++P_Loc_In_Rx_Buffer3) = '\0';
P_Loc_In_Rx_Buffer3 = A_Rx_Buffer3; //where all the data received
Command_Received = TRUE; // start to print on usart (terminal)
numOfRows=1; // I try to make default to 1 line
return;
}
else
{
rows++;
}
}
答案 6 :(得分:0)
我还设法在视图中将'd-m-Y'中的日期格式'Y-m-d'从数据库更改为传递日期。
我将此代码放在模型中
public function getDOB(){
return $this->dob->format('d-m-Y');
}
答案 7 :(得分:0)
use App\User;
use Carbon\Carbon;
Route::get('/userage',function(){
$user_info = User::find(1);
// When ( $table->date('birthday'); )
$birthday = $user_info->birthday;
$user_age = Carbon::parse($birthday)->diff(Carbon::now())->format('%y years, %m months and %d days');
echo($user_age);
});
答案 8 :(得分:0)
在您的刀片模板中执行此操作
@php
$birthday = $user->date_of_birth;
$age = Carbon\Carbon::parse($birthday)->diff(Carbon\Carbon::now())->format('%y years, %m months and %d days');
@endphp
<p>{{$age}}</p>
答案 9 :(得分:0)
在 Laravel 的 User.php 模型中:
增加了这个功能
public function getAge() {
$format = '%y years, %m months and %d days';
return \Carbon\Carbon::parse(auth()->user()->dateofbirth)->diff(\Carbon\Carbon::now())->format($format);
}
在视图刀片中:
Age: {{ auth()->user()->getAge() }}