我在一個項(xiàng)目中使用自定義 PK 和 FK,我正在嘗試建立一對一關(guān)系。例如,在 Employee.php 中:public function title(){ return $this->hasOne('App\Title', 'TitleID');}在 Tinker 上,我可以像這樣檢索員工 TitleID:$employee = Employee::first();$employee->TitleID;哪個返回:“6”我現(xiàn)在做了一個模型:Title.php:class Title extends Model{ protected $table = "dbo.title"; protected $primaryKey = 'TitleID';}在 Tinker 中運(yùn)行時,我可以正確檢索該模型的內(nèi)容$title = Title::all();。我在 Employee.php 中建立了一個新的關(guān)系:public function title(){ return $this->hasOne('App\Title', 'TitleID');}但是,在 Tinker(我已經(jīng)重新啟動)中運(yùn)行時:$employee = Employee::first();$employee->title()->get();它返回:Illuminate\Database\Eloquent\Collection {#3027 全部: [], }我做了什么錯誤地建立了這種關(guān)系?
2 回答

POPMUISE
TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個贊
問題是因?yàn)榱硪粋€表的主鍵不是id
,所以無法找到該集合。
但是,根據(jù)文檔,它是這樣寫的:
此外,Eloquent 假定外鍵的值應(yīng)與父項(xiàng)的 id(或自定義 $primaryKey)列相匹配。
所以我假設(shè)因?yàn)槲以O(shè)置了一個自定義$primaryKey
值,它會憑直覺找到它——但問題似乎與打破 Eloquent 約定的本地鍵的名稱有關(guān)。
我通過分別聲明外鍵和本地鍵解決了這個問題:
public function title(){ return $this->hasOne('App\Title', 'TitleID', 'TitleID'); }

慕萊塢森
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
您只需要訪問屬性title
而不是調(diào)用title()
:
$employee = Employee::first(); $employee->title;
- 2 回答
- 0 關(guān)注
- 169 瀏覽
添加回答
舉報
0/150
提交
取消