簡體   English   中英

如果表位於不同的數據庫中,是否可以在 Eloquent 模型中定義關系?

[英]is it possible to define relationships in Eloquent models if tables are in different databases?

有兩個表在不同的數據庫中。 假設其中一個是用戶,另一個是汽車。 Cars 中有“user_id”列。 是否可以為這兩個表(汽車和用戶)創建模型,以便在查詢用戶時可以急切地加載關系? 像這樣:

User::find(3)->with('cars')->get();

不可能走捷徑。 您可以通過設置不同的連接來做到這一點,但這不符合關系數據庫策略。

您可以對支持此功能的數據庫執行此操作,例如 Microsoft SQL 服務器作為驅動程序。 完成這項工作所需要做的就是在配置中添加多個連接(數據庫)並在 model 中引用它們:

protected $connection = 'database2';

實際上我試過了,結果證明 laravel 在這種情況下工作得很好。 您只需要在模型上指定連接,並像往常一樣定義關系。 關鍵是當您使用 Model::with('relation') 時,laravel 不會創建一個大查詢。 首先它查詢根 model,然后查詢子 model,然后在代碼中匹配它們。 雖然我覺得很奇怪,因為它必須降低性能,因為我們有兩個查詢而不是一個,然后它處理結果,盡管它適用於跨數據庫關系。

暫無
暫無

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

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