我有2个表,users
和profiledetails
我可以运行加入查询并访问数据并发送到视图。
但是当我操纵这个领域的时候,他们会去做一些事情。 profiledetails
表中的(日期格式)。没有成功,请检查以下代码,
webpagesConroller
:
$users = DB::table('users')
->join('profiledetails', 'users.id', '=', 'profiledetails.user_id')
->select('users.*', 'profiledetails.dob')
->get();
$age = $users->dob->diffInYears(Carbon::now());
return view('webpages.index',compact('users'))->with($age);
View:
<li class="cate_head">Age : {{ $age}}</li>
错误:
Trying to get property of non-object
我有模型Profiledetails
添加了以下的mutator,
public function getAge(){
return $this->dob->diffInYears(Carbon::now());
}
public function getDOB(){
return $this->dob->format('d-m-Y');
}
我是否可以在Ex-webpagesController的其他控制器上使用此方法,如果是,如何。
答案 0 :(得分:0)
由于您使用的是原始查询,因此返回的数据不是对象,而是包含数据的数组。
此外,您没有限制查询,这意味着它可以返回多行。 您可能需要将$ users中的数据作为:
//with the possibily of multiple rows. Index is the row which has to be used
$users[index]['dob']
//when you are sure it only returns one row
$users[0]['dob'] // or $users['dob'] not sure as of the moment
您想检查与碳的差异。 因此,您可能需要制作dob结果的Carbon对象并将其与Carbon :: now进行核对。
$age = Carbon::createFromFormat('Y-m-d', $users[0]['dob'])->diffForHumans();
// diffForHumans() uses the local time
请注意,这只会获得一行的年龄(索引或第一行,因为[0])。
如果您想为每一行执行此操作,请使用for或foreach为每个$ user设置$ users-&gt;年龄。但由于这些不是对象/模型而是原始数据,因此不起作用。
希望这有助于你的问题