[英]Laravel Eloquent relationship not working
我正在使用laravel 5.4
我有兩個模型:用戶模型和體驗模型。 我已經在User模型內創建了Experience方法,如下所示。
public function Experience() {
return $this->hasMany('App\Experience', 'updatedbyuser_id');
}
在這里,updatedbyuser_id是外鍵,並且是數據庫中Experiences表的一列。
我在體驗模型中創建了另一個名為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類的對象轉換為字符串
你試過了嗎
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
我認為函數應始終以小寫開頭。
如果將集合強制轉換為字符串,則將其作為JSON返回:
public function returnExperience() {
$lists = (string) Experience::where(['deleted' => '0'])->get();
return view('pages.experience', compact('lists'));
}
而不是下面的行:
$list->User->id
嘗試:
$list->User()->id
並在命名函數時始終使用駱駝套。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.