簡體   English   中英

多個 Laravel Eloquent 關系未顯示所有關系的數據

[英]Multiple Laravel Eloquent Relationship not showing data from all relationships

我想獲取idcourseName從課程表, idnamemobuseridFilePathfiles表中,該userId課程表中有值iduser表和fileId當然表中有值files表中的id 。下面的代碼沒有顯示來自用戶模型的任何數據,它為user顯示null 任何幫助深表感謝。

課程表

ID 課程名 用戶身份 文件編號
Course::with('user:id,name,mob','files:id,FilePath')
->select ('id','courseName')
->get();

課程模式

public function files(){
  return $this->belongsTo(Uploads::class,'fileId','id');
}
public function user(){
 return $this->belongsTo(User::class,'userId','id');
}

試試這個,讓我知道它是否有效

  Course::with([
               'user' => function($q)
                    {
                        $q->select('id', 'name' , 'mob');
                    },
                'files' => function($q)
                    {
                         $q->select('id', 'filePath');
                    }  
           ])->get(['id','courseName']);

您混淆了user關系的 ownerKey 和 foreignKey。 嘗試更新與此的關系

public function user(){
  return $this->belongsTo(User::class, 'userId', 'id');
}

讓我解釋一下 elquent 如何運行“with”

  • 首先進行查詢以獲取您需要的所有課程
  • 其次,對您需要的每個關系進行另一個查詢以獲取它並將其添加到它的位置

為此,如果課程屬於用戶,您需要選擇此關系的列,您必須加載 userId 以加載與 fileId 相同的用戶數據

如果你像這樣加載 userId 和 fileId,你的問題就會解決

Course::with('user:id,name,mob','files:id,FilePath')->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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