如何在自定义关系后检索具有关系的 Eloquent 模型
How to retrieve Eloquent model with relationship after customized relationship
我有 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 中正确定义了关系。但是,使用 "with" 子句调用关系会抛出异常
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"); }]);
我想了解在上述情况下如何检索关系。如果有其他推荐的方法,那我也很想知道
我想你要找的是:
Kredittkort::with(['bankleverandor' => function ($query) {
$query->select('fpid','orgnr');
}])->get();
这是文档的 link:Constraining Eager Loads
对于那些面临类似问题的人。我错误地使用相关 class 的完全限定名称加载关系。相反,我应该使用方法名称 (bankleverandor),我在其中定义关系 belongsTo。
错误用法:
Kredittkort::with(["\App\Bankleverandor" => function($q) {
return $q->select("fpid,orgnr");
}]);
正确用法:
Kredittkort::with(['bankleverandor' => function ($query) {
$query->select('fpid','orgnr');
}])->get();
我有 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 中正确定义了关系。但是,使用 "with" 子句调用关系会抛出异常
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"); }]);
我想了解在上述情况下如何检索关系。如果有其他推荐的方法,那我也很想知道
我想你要找的是:
Kredittkort::with(['bankleverandor' => function ($query) {
$query->select('fpid','orgnr');
}])->get();
这是文档的 link:Constraining Eager Loads
对于那些面临类似问题的人。我错误地使用相关 class 的完全限定名称加载关系。相反,我应该使用方法名称 (bankleverandor),我在其中定义关系 belongsTo。
错误用法:
Kredittkort::with(["\App\Bankleverandor" => function($q) {
return $q->select("fpid,orgnr");
}]);
正确用法:
Kredittkort::with(['bankleverandor' => function ($query) {
$query->select('fpid','orgnr');
}])->get();