我有2张表,模型之间有自定义Eloquent关系。这种关系很直接,Kredittkort.leverandor_id引用了Bankleverandor.fpid
class Bankleverandor extends Model {
protected $primaryKey = 'fpid';
protected $guarded = [];
public function kredittkort() {
return $this->hasMany("App\Kredittkort", 'leverandor_id', 'fpid');
}}
和
class Kredittkort extends Model {
protected $guarded = [];
protected $primaryKey = 'fpid';
public function bankleverandor() {
return $this->belongsTo("App\Bankleverandor", "leverandor_id", 'fpid');
}}
这种关系很好。例如
Kredittkort::find(258053)->bankleverandor;
Bankleverandor::find(441)->kredittkort;
给出了我预期的结果,表明在Eloquent ORM中正确定义了关系。但是,使用"和"来调用关系。子句抛出异常
RelationNotFoundException in RelationNotFoundException.php line 20:Call to undefined relationship [\App\Bankleverandor] on model [App\Kredittkort].
我正在尝试按如下方式检索关系
Kredittkort::with(["\App\Bankleverandor" => function($q) {return $q->select("fpid,orgnr"); }]);
我想了解如何在上述情况下检索关系。如果有另一种推荐的方式,那么我也很想知道
答案 0 :(得分:1)
我认为您正在寻找的是:
Kredittkort::with(['bankleverandor' => function ($query) {
$query->select('fpid','orgnr');
}])->get();
以下是文档的链接:Constraining Eager Loads
答案 1 :(得分:0)
对于那些面临类似问题的人。我错误地使用相关类的完全限定名称加载关系。相反,我应该使用方法名称(bankleverandor),我在其中定义了关系belongsTo。
错误用法:
Kredittkort::with(["\App\Bankleverandor" => function($q) {
return $q->select("fpid,orgnr");
}]);
正确使用:
Kredittkort::with(['bankleverandor' => function ($query) {
$query->select('fpid','orgnr');
}])->get();