iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
0
自我挑戰組

來用Laravel做點什麼吧系列 第 9

D9 長官,聯絡上資料庫了!

Laravel目前支援四個資料庫:

  • MySQL
  • PostgreSQL
  • SQLite
  • SQL Server

資料庫的設定位於config/database.php,已經寫好連接不同資料庫的預設資訊。我們要用的是MySQL,就用它來舉個栗子,MySQL的連線設定長這樣:

'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', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
],

其中一些設定值是env( , ),這個函式是指該設定值會參考.env(環境設定檔)內容,如果環境設定檔這個值是default,就會使用,後面的內容。

如果不想用MySQL想改用MariaDB,一樣也是修改mysql設定的參數。

另外有一行

'default' => env('DB_CONNECTION', 'mysql'),

是用來指定我的Project要連結的資料庫是哪個,像我要連MySQL後面就是接mysql。

做到這裡時,有碰到phpMyAdmin無法連線MySQL的問題,大概講一下後來的解決方式。

共兩個設定檔laravel/laradock/.envlaravel/.env,兩邊都要修改,將MySQL的帳號、密碼跟Database名稱修改一致。帳密要夠長夠複雜,不然MySQL可能會不接受(test、user之類的盡量不要)。

// laravel\laradock\.env

MYSQL_DATABASE=db_name
MYSQL_USER=user_name
MYSQL_PASSWORD=user_password

PMA_USER=user_name
PMA_PASSWORD=user_password
// laravel\.env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=db_name
DB_USERNAME=user_name
DB_PASSWORD=user_password

特別注意DB_HOST要改成mysql。

Project的設定檔要因應環境來修改,在Docker的環境下,每個Container都可以視作一個伺服器,所以對他們而言127.0.0.1是自己,但我們不會希望phpMyAdmin是連給自己吧:)

所以我們要讓phpMyAdmin再往外連到外部伺服器(你的主機本體),然後從外面連回來MySQL的port 3306。


上一篇
D8 Controller
下一篇
D10 聽過Migration嗎?
系列文
來用Laravel做點什麼吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言