我正在使用laravel 5.4
我有两种型号的用户模型和体验模型。我在User模型中创建了Experience方法,如下所示。
public function Experience() {
return $this->hasMany('App\Experience', 'updatedbyuser_id');
}
这里updatedbyuser_id是外键,是数据库中experience表的一列。
我在体验模型中创建了另一个名为User的方法,如下所示。
public function User() {
return $this->belongsTo('App\User');
}
我创建了一个控制器' PagesController'并将以下方法放在其中
public function returnExperience() {
$lists = Experience::where(['deleted' => '0'])->get();
return view('pages.experience', compact('lists'));
}
要查看returnExperience()方法返回的数据,我的视图页面包含以下代码
@foreach($lists as $list)
<tr>
<td>{{$list->min}}</td>
<td>{{$list->max}}</td>
<td>{{$list->grade}}</td>
<td>{{$list->User->id}}</td>
<td>{{$list->updated_at}}</td>
<td>Edit</td>
</tr>
@endforeach
但它在屏幕上返回以下错误消息
类Illuminate \ Database \ Eloquent \ Relations \ BelongsTo的对象无法转换为字符串
答案 0 :(得分:0)
您尝试过
public function user() {
return $this->belongsTo('App\User');
}
和
@foreach($lists as $list)
<tr>
<td>{{$list->min}}</td>
<td>{{$list->max}}</td>
<td>{{$list->grade}}</td>
<td>{{$list->user->id}}</td>
<td>{{$list->updated_at}}</td>
<td>Edit</td>
</tr>
@endforeach
我认为函数应始终以小写开头。
答案 1 :(得分:0)
如果将集合强制转换为字符串,则将其作为JSON返回:
public function returnExperience() {
$lists = (string) Experience::where(['deleted' => '0'])->get();
return view('pages.experience', compact('lists'));
}
答案 2 :(得分:0)
代替下面的行:
$list->User->id
尝试:
$list->User()->id
并且在命名函数时始终使用骆驼套。