0

我有兩個表與模型之間的定製Eloquent關係。的關係是直線前進與Kredittkort.leverandor_id引用Bankleverandor.fpid如何在定製關係後檢索具有關係的Eloquent模型

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"); }]); 

我想知道我怎麼可以檢索在上述情況下的關係的關係。如果有另一種推薦的方式,那麼我很想知道,以及

回答

1

我想你要找的是:

Kredittkort::with(['bankleverandor' => function ($query) { 
    $query->select('fpid','orgnr'); 
}])->get(); 

下面是對文件的鏈接:Constraining Eager Loads

+0

感謝您的回答。我錯誤地使用該類的名稱空間加載關係。 – Prakhar

0

對於那些面臨類似問題的人。我錯誤地使用相關類的全名來加載關係。相反,我應該使用方法名稱(bankleverandor),我在這裏定義了belongsTo關係。

錯誤用法:

Kredittkort::with(["\App\Bankleverandor" => function($q) { return $q->select("fpid,orgnr"); }]);

正確的用法:

Kredittkort::with(['bankleverandor' => function ($query) { $query->select('fpid','orgnr'); }])->get();