2014-03-26 19 views
2

在工作中,我們使用Nagios作爲我們的監控平臺,我們有一個內部寫入配置生成器。Can Laravel 4可以使用不同的數據庫

我打算使用Laravel 4重新編寫此文。我們的設置是我們支持多個客戶,他們都將擁有自己的配置。出於安全原因,我們將每個客戶端配置存儲在單獨的數據庫中,並使用Apache配置中的環境變量(每個客戶端使用不同的TCP端口)將數據庫憑據提供給前端。

問題是,每個客戶端都有數據庫表,這些數據庫表對於每個客戶端即時間段,聯繫人等都是通用的。目前,如果我們想要更改普通項目,則必須手動對所有數據庫執行此操作(儘管我已經從cli中編寫了這個腳本)

我希望將常見元素分離到一個數據庫中,並且在它們自己的數據庫中包含客戶端特定項目。

我知道Laravel能夠輕鬆地擁有多個數據庫連接,但我的問題是可以在兩個不同的數據庫中的表之間創建Eloquent關係。

一個示例是客戶端數據庫中的Service具有timeperiod_id列,該列是共享數據庫的timeperiod表中的主鍵的外鍵。

我希望能夠無縫地做類似下面的控制器(與模型選擇恰當的關係。

$services = Service::all(); 

,並在刀片模板視圖

@foreach ($services as $service) 
    {{ $service->name }} 
    {{ $service->timeperiod->name }} 
@endforeach 

的Laravel文檔谷歌似乎沒有擺脫任何光是否這是可能的。

任何幫助極大讚賞

+0

因此,您有一個使用多個數據庫的「服務」模型? – ryanwinchester

+0

目前一切都在紙上,因爲我正在評估使用的最佳框架(以前使用過Yii)。像Laravel的外觀,但我需要這個功能。我有一個僅與客戶端數據庫服務錶鏈接的服務模型,但我想在此數據庫中的外鍵timeperiod_id和公共數據庫時間段表中的主鍵之間建立一對多關係。我知道我可以設置模型的連接屬性,但我可以指定使用不同連接的關係,如果是這樣的話? – d9705996

+0

這是一個棘手的問題......當我下班回家時,我會考慮通過它,並希望在此之前有人更聰明的答案。 – ryanwinchester

回答

6

我目前正在做一個我的laravel項目。

如果需要,您可以指定一個外鍵匹配並且還有一個不同的主鍵。

class TimePeriod extends Eloquent { 

    protected $connection = 'some_Db'; 
    protected $table = 'time_period'; 
    protected $primaryKey = 'id';//can set this to anything, will default to auto incr id(optional) 

    public function Services() { 
    return $this->hasone('Services', 'time_period_id');//specify the foreign key as second param 
    } 

} 

class Services extends Eloquent { 

    protected $connection = 'client'; 
    protected $table = 'services'; 

    public function TimePeriod() { 
    return $this->belongsto('TimePeriod', 'id');//specify the foreign key as second param 
    } 

} 
+0

這個例子對我來說是一種救命!所以...感謝,感謝,感謝與我們分享! :d –

相關問題