【发布时间】:2018-09-12 19:46:43
【问题描述】:
我使用的是 laravel 5.4
我有两个模型用户模型和体验模型。我在 User 模型中创建了 Experience 方法,如下所示。
public function Experience() {
return $this->hasMany('App\Experience', 'updatedbyuser_id');
}
这里updatedbyuser_id是外键,是数据库中experiences表的一列。
我在 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 类的对象无法转换为字符串
【问题讨论】:
-
首先将所有函数更改为模型名称以外的其他名称,然后使用 $list->function_name()->id
-
@Exprater 使用 $list->user->id 完全没问题,因为关系也会自动映射到属性。除非您需要从关系中获取方法,否则您将使用 user()->somemethod();