我有下一个数据库结构:
我的Eloquent模型中有下一个代码:
Sample.php
public function polfzms()
{
return $this->belongsToMany('App\Polfzm');
}
Polfzm.php
public function samples()
{
return $this->belongsToMany('App\Sample');
}
public function gene()
{
return $this->belongsTo('App\Gene');
}
Gene.php
public function polfzms()
{
return $this->hasMany('App\Polfzm');
}
我尝试使用where子句中的dot来获取带有标签,polfzms和gene的样本数据 - polfzms.gene
public function show($id)
{
return Sample::with('labels', 'polfzms.gene')->findOrFail($id);
}
但我有一个"gene":null
{
"id":18,
"person_id":1,
"prefix_id":3,
"labels":[
{
"id":1,
"name":"Name1",
"meaning":"dfdf",
"pivot":{
"sample_id":18,
"label_id":1
}
},
],
"polfzms":[
{
"id":1,
"name":"G20210",
"id_gene":1,
"pivot":{
"sample_id":18,
"polfzm_id":1
},
"gene":null
}
]
}
我使用最新的laravel版本。我该如何解决?
答案 0 :(得分:1)
您的null
关系正在获得Gene
,因为您没有明确定义外键,也没有遵循Eloquent命名约定。
Eloquent希望外键为gene_id
,而您的架构具有外键id_gene
。
要解决此问题,请更改架构以将外键定义为gene_id
,或按如下方式更新您的关系:
public function gene()
{
return $this->belongsTo('App\Gene', 'id_gene');
}