繁体   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