新聞中心
在當(dāng)今的互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)已成為我們生產(chǎn)、生活和管理的必需品。為了不影響系統(tǒng)性能和正確性,我們經(jīng)常需要將數(shù)據(jù)存儲(chǔ)在多個(gè)數(shù)據(jù)庫(kù)中。Lumen是一款基于Laravel設(shè)計(jì)的高性能微服務(wù)框架,它支持多個(gè)數(shù)據(jù)庫(kù),并提供了方便、簡(jiǎn)單的方法來連接多個(gè)數(shù)據(jù)庫(kù)。在本文中,我們將會(huì)探討如何在Lumen框架中支持多個(gè)數(shù)據(jù)庫(kù)。

1. 在Lumen框架中配置多個(gè)數(shù)據(jù)庫(kù)連接
默認(rèn)情況下,Lumen框架只支持連接一個(gè)數(shù)據(jù)庫(kù)。若要支持多個(gè)數(shù)據(jù)庫(kù)連接,則需對(duì)Lumen框架進(jìn)行配置。在config/database.php中,使用以下方法配置數(shù)據(jù)連接:
“`php
‘connections’ => [
‘mysql’ => [
‘driver’ => ‘mysql’,
‘host’ => env(‘DB_HOST’, ‘127.0.0.1’),
‘port’ => env(‘DB_PORT’, ‘3306’),
‘database’ => env(‘DB_DATABASE’, ‘forge’),
‘username’ => env(‘DB_USERNAME’, ‘forge’),
‘password’ => env(‘DB_PASSWORD’, ”),
‘charset’ => ‘utf8mb4’,
‘collation’ => ‘utf8mb4_unicode_ci’,
‘prefix’ => ”,
‘strict’ => true,
‘engine’ => null,
],
‘mysql2’ => [
‘driver’ => ‘mysql’,
‘host’ => env(‘DB_TWO_HOST’, ‘127.0.0.1’),
‘port’ => env(‘DB_TWO_PORT’, ‘3306’),
‘database’ => env(‘DB_TWO_DATABASE’, ‘forge’),
‘username’ => env(‘DB_TWO_USERNAME’, ‘forge’),
‘password’ => env(‘DB_TWO_PASSWORD’, ”),
‘charset’ => ‘utf8mb4’,
‘collation’ => ‘utf8mb4_unicode_ci’,
‘prefix’ => ”,
‘strict’ => true,
‘engine’ => null,
],
],
“`
在Lumen框架中,可以通過數(shù)據(jù)庫(kù)連接名稱訪問不同的數(shù)據(jù)庫(kù),如下所示:
“`php
DB::connection(‘mysql’)->table(‘users’)->get();
DB::connection(‘mysql2’)->table(‘orders’)->get();
“`
2. 在Lumen框架中使用多個(gè)數(shù)據(jù)庫(kù)
在配置了多個(gè)數(shù)據(jù)庫(kù)連接之后,接下來就是如何在Lumen框架中使用這些連接了。假設(shè)我們?cè)贚umen框架中有兩個(gè)模型分別為User和Order,它們分別將數(shù)據(jù)存儲(chǔ)在不同的數(shù)據(jù)庫(kù)中。我們可以使用以下方法在不同的數(shù)據(jù)庫(kù)中訪問:
a. 在User模型中指定連接
“`php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The connection name for the model.
*
* @var string
*/
protected $connection = ‘mysql’;
}
“`
b. 在Order模型中指定連接
“`php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
/**
* The connection name for the model.
*
* @var string
*/
protected $connection = ‘mysql2’;
}
“`
3. 使用多數(shù)據(jù)庫(kù)時(shí)的注意事項(xiàng)
在使用多個(gè)數(shù)據(jù)庫(kù)時(shí)需要注意以下幾點(diǎn):
a. 注意數(shù)據(jù)庫(kù)鏈接的不同。連接的多個(gè)數(shù)據(jù)庫(kù)不一定在同一臺(tái)服務(wù)器上,因此要注意主機(jī)名、端口、用戶名和密碼的正確性,以及網(wǎng)絡(luò)連接的穩(wěn)定性。
b. 注意數(shù)據(jù)表的前綴。不同的數(shù)據(jù)庫(kù)可能會(huì)有相同的表名,為了避免沖突,可以使用數(shù)據(jù)表前綴。
c. 注意Lumen框架提供的函數(shù)。有些函數(shù)只適用于默認(rèn)連接,例如migration、seeder等。如需對(duì)多個(gè)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)遷移、填充等操作,需要手動(dòng)指定數(shù)據(jù)庫(kù)連接。
4.
在Lumen框架中支持多個(gè)數(shù)據(jù)庫(kù)非常容易,只需配置多個(gè)數(shù)據(jù)庫(kù)連接,并在模型中指定不同的連接即可。使用多個(gè)數(shù)據(jù)庫(kù)時(shí)需要注意連接的正確性、數(shù)據(jù)表前綴的設(shè)置、Lumen框架提供的函數(shù)等問題。Lumen框架的高性能和靈活性,使其成為開發(fā)高性能微服務(wù)的首選框架,支持多個(gè)數(shù)據(jù)庫(kù)的能力更是優(yōu)勢(shì)之一。
相關(guān)問題拓展閱讀:
- 如何讓 Lumen 中數(shù)據(jù)庫(kù)返回?cái)?shù)組
- lumion和lumen文件能互相轉(zhuǎn)換么??
如何讓 Lumen 中數(shù)據(jù)庫(kù)返回?cái)?shù)組
lumen 怎樣 配置 訪問 mysql
Lumen框架的所有配置項(xiàng)都放在配置文件.env 中。
2、訪問配置值
你可以使用全局的輔助函數(shù)config來訪問配置值,配置值可以通過”.”來分隔配置文件和配置項(xiàng),如果配置項(xiàng)不存在的話則會(huì)返回默認(rèn)值:
$value = config(‘a(chǎn)pp.timezone’);
如果要在運(yùn)行時(shí)設(shè)置配置值,傳遞一個(gè)數(shù)組到config函數(shù):
config( ‘America/Chicago’>);
3、環(huán)境配置
基于應(yīng)用運(yùn)行環(huán)境擁有不同配置值能夠給我們開發(fā)帶來極大的方便,比如,我們想在本地和線上環(huán)境配置不同的緩存驅(qū)動(dòng),在Lumen中這很容易實(shí)現(xiàn)。
Lumen使用了Vance Lucas開發(fā)的PHP庫(kù)DotEnv來實(shí)現(xiàn)這一目的,在新安裝的Lumen中,根目錄下有一個(gè).env.example文件,如果Lumen是通過Composer安裝的,那么該文件已經(jīng)被重命名為.env,否則的話你要自己手動(dòng)重命名該文件。
在每次應(yīng)用接受請(qǐng)求時(shí),.env中列出的所有變量都會(huì)被載入到PHP超全局變量$_ENV中,然后你就可以在應(yīng)埋滲用中通過輔助函數(shù)env來獲取這些變量值:
$debug = env(‘APP_DEBUG’, true);
第二個(gè)傳遞給env函數(shù)的值是默派液讓認(rèn)值,如果給定key對(duì)應(yīng)的環(huán)境變量不存在則使用該默認(rèn)值。
不要把.env文件提交到源碼控制(svn或git等)中,因?yàn)槊總€(gè)使用你的應(yīng)用的不同開發(fā)者或服務(wù)器可能要求不同的環(huán)境配置。
如果你是在一個(gè)團(tuán)隊(duì)中進(jìn)行開發(fā),你可能需要將.env.example文件隨你的應(yīng)用一起提交到源碼控制中,通過將一些配置值以占位符的方式放置在.env.example文件中,其他開發(fā)者可以很清楚明了的知道運(yùn)行你的應(yīng)用需要配置哪些環(huán)境變量。
判斷當(dāng)前應(yīng)用環(huán)境
當(dāng)前應(yīng)用環(huán)境通過.env文件中的配置項(xiàng)來 APP_ENV決定,可以通過App實(shí)例上的environment方法來訪問該配置值:
$environment = app()->environment();
你也可以向environment方法中傳遞參數(shù)來判斷當(dāng)前環(huán)境是否匹配給定值,如果需要的話你甚至可以傳遞多個(gè)值,如果匹配的話會(huì)返回true:
if (App::environment(‘local’)) {
// The environment is local
}
if (App::environment(‘local’, ‘staging’)) {
lumion和lumen文件能互相轉(zhuǎn)換么??
在電驢上漫長(zhǎng)的下載終于下完了,LumenRT是目前為止最強(qiáng)大的su插件,可以出動(dòng)畫和exe,雖然它在后臺(tái)上運(yùn)行,但它的位置是在su中的plugins,所以我們當(dāng)作它是插件吧,事實(shí)上你發(fā)現(xiàn)你安裝的LumenRT有3.4G那么大,所以它非常嚇人裂睜
使用了幾天,測(cè)試了幾個(gè)模型,發(fā)現(xiàn)它事實(shí)上更適合用與室內(nèi),或者小型的室外模型,LumenRT真正實(shí)現(xiàn)完全與su對(duì)接,在官方的介紹中你可以發(fā)現(xiàn)它的演示模式與su中的動(dòng)畫非常相似,事實(shí)上它就是在su中建好多個(gè)動(dòng)畫頁(yè)面,各個(gè)頁(yè)面的位置不同而產(chǎn)生位移,然后你打開Lumenrt渲染時(shí)時(shí)發(fā)現(xiàn)它的動(dòng)畫與你的su中一樣,Lumenrt還有一個(gè)很好的用途就是它可以通過導(dǎo)處exe,復(fù)制到別人電腦上可以直接打開,觀看的電腦不需要安裝LumenRT和su(這臺(tái)電腦要裝有中等以上顯卡),一樣可以實(shí)現(xiàn)方案演示,通過打開你的exe,第三方既可以觀看動(dòng)畫,又可以通過行肆前歲走模式自由觀看模型,他會(huì)發(fā)覺這和三維軟件觀看沒什么區(qū)別,也就是說它超越動(dòng)畫局限,如果你只看avi動(dòng)畫,只能看到某一方面,而不能自由觀看模型的每一個(gè)角落。
這里我想之一告訴大家的是,LumenRT你可以用它來渲染出格式有jpeg、avi、exe,但有一點(diǎn)注意的是輸出avi格式的文件是巨大的,例如我做了個(gè)很小的模型,渲染質(zhì)量選擇為更低,渲染的時(shí)間為15s,最后渲染出來的avi是988M,差不多1G,所以如果你要渲染出avi你的硬盤首先要騰出大空間,值得一題的是,無(wú)論是avi還是exe,渲染的速度是超級(jí)快的。
另外提一個(gè)bug,不知道算不算是bug,當(dāng)你之一次輸出avi時(shí),很容易就渲染出來了,但你第二次渲染時(shí),如果你還是放在同一個(gè)位置,即使你改了輸出文件名也會(huì)提示你失敗,所以當(dāng)你想第二次輸出時(shí),記得要將輸出位置改為其他地方,我想這是官方為了我們硬盤容量著想,因?yàn)樗S便渲染avi文件都那么大
最后要提到的是LumenRT對(duì)中文挺反感,也就是不會(huì)辨認(rèn)中文,你的文件名是如果中文的更好改為英文,否則會(huì)有很多錯(cuò)誤之處,最后在LumenRT里面你可以發(fā)現(xiàn)玻璃和水模擬的很像,其實(shí)這很容易實(shí)現(xiàn),首先你在su建模時(shí)水或玻璃都要用su自帶的水和玻璃材質(zhì),這樣它才能辨認(rèn)水和玻璃,我使用的是中文版su暫時(shí)沒有發(fā)現(xiàn)它與LumenRT有什么沖悔檔突的。
lumen 多個(gè)數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于lumen 多個(gè)數(shù)據(jù)庫(kù),Lumen框架如何支持多個(gè)數(shù)據(jù)庫(kù),如何讓 Lumen 中數(shù)據(jù)庫(kù)返回?cái)?shù)組,lumion和lumen文件能互相轉(zhuǎn)換么??的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
當(dāng)前題目:Lumen框架如何支持多個(gè)數(shù)據(jù)庫(kù)(lumen多個(gè)數(shù)據(jù)庫(kù))
網(wǎng)頁(yè)網(wǎng)址:http://m.fisionsoft.com.cn/article/dhiscep.html


咨詢
建站咨詢
