簡體   English   中英

當數據庫多對多時返回一對一關系實例

[英]Return a one to one relationship instance when database is many to many

我在數據庫中有許多關系,看起來像User-> user_companies-> company。

我的問題是,就我們的業務邏輯而言,這應該是一對一的關系,但是要糾正這一點將需要大量工作。 在數據透視表中,用戶永遠只有一個條目。

當前在用戶模型上,我正在執行此操作,但是它返回一個模型而不是一個關系實例。

// returns relationship instance
public function companies()
{
    return $this->belongsToMany('App/Company', 'user_companies');
}

// returns model
public function company()
{
    return $this->companies()->first();
}

在數據庫設置多對多的情況下,我是否可以模仿一對一關系的行為?

更新:

Laravel現在開箱即用地添加了一個HasOneThrough關系。 https://laravel.com/docs/5.8/eloquent-relationships#has-one-through

有了這個,這是有可能的,但您實際上必須深入研究核心並構建自己的自定義解決方案(關系查詢生成器)。

首先想到的是hasOneThrough關系方法。 不幸的是,這並不存在。 我的建議是找到一個可靠的軟件包來完成此任務。

實際上,我能夠找到此包: https : //github.com/riesjart/relaquent

否則,除非您的數據庫架構是一團糟,否則,至少要在您的users表中添加company_id然后編寫sql遷移腳本就不會很復雜。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM