有人可以更正此错误!我已经连续两天敲打它的头了!我从未成功完成过hasOneThrough关系工作,但我决定重试一次。现在,我得到的错误是“调用未定义的方法App \ Models \ OppModels \ opp_main :: hasOneThrough()”。我相信我的问题是本地密钥和外来密钥,但是如果我真的知道问题,那么我可以解决它。我确实意识到我可以将org_id硬编码到我的opp_main表中,但是出于将来的考虑,我真的很想完成这项工作。我的桌子设计是:
---------
opp_main
---------
id
---------
---------
opp_org
---------
id
opp_id
org_id
---------
---------
org_main
---------
id
---------
我的关系看起来像这样(评论来自文档,试图在我的脑海中进行组织):
public function org()
{
return $this->hasOneThrough(
'App\Models\OrgModels\org_main', // Final model
'App\Models\OppModels\opp_org', // Intermediate model
'opp_id', // Foreign key on intermediate model
'id', // Foreign key on the final model
'id', // local key
'org_id' // local key of the intermediate model
);
}
这就是我的称呼(我尝试过$ item-> org;和$ item-> org();):
public function getAllOpportunities()
{
$opps = opp_main::orderBy('status', 'asc')->get();
$opps->map(function ($item) {
$item['org'] = $item->org;
return $item;
});
return response()->json([ 'success' => true, 'data' => $opps ]);
}
感谢您的帮助!
答案 0 :(得分:0)
使用文档来安排它。注意与您的解决方案不同的地方
id
opp_org ID opp_id
opp_main
return $this->hasOneThrough(
'org_main', // final model
'opp_org', // intermediate or linking model
'opp_id', //fk on opp_org linking to opp_main
'opp_org_id', // fk on org_main linking ot opp_org table,
'id', //local key on opp_main
'id', //local key on opp_org / intermediate model
);