簡體   English   中英

Laravel雄辯的關系不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM