laravel part 3

接著就是建立資料方面的事情啦!登入總要有先有資料對吧!

Step 1. Mysql設定

開啓phpmyadmin,建立一個新的Database,這邊取名為laravel_sample,如下圖

再來就是設定laravel的資料庫連線,開啓database.php,找到mysql的設定,輸入database名稱還有連線的帳號密碼

database.php
1
2
3
4
5
6
7
8
9
10
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel_sample',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

Step 2. 建立Table

laravelartisan很方便,這邊你不需要自己在phpmyadmin手動一個一個輸入column name和type,也不用自己寫mysql的create,可以透過指令和一些code來幫你完成建立Table。

開啟終端機,切換到專案的路徑下,以我的環境來說,我的的專案是在/Application/XAMPP/htdocs/laravel_sample/;然後輸入下面的指令:

php artisan migrate:make create-users-table

實際上會幫你建立一個 時間 加上 create-users-table的一個檔案,如下圖:

接著開啟這個檔案,這個檔案的路徑會在app/database/migrations/

在這檔案會看到兩個method,一個是用來建立,另一個當然就是拿來還原的囉!建立的程式主要就是用來建立Table,直接看code吧,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('name', 32);
$table->string('username', 32);
$table->string('email', 320);
$table->string('password', 64);
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}

再次回到終端機,輸入下面的指令來建立Table

php artisan migrate

阿…發生錯誤了!

似乎是無法跟mysql連線,請試著修改database.phphost,修改為127.0.0.1,或者你可以參考這篇Laravel setup of migrations using Artisan is failing,直接指定unix_socket的路徑,因為我有在遠端安裝的時候遇過這情形。

database.php
1
2
3
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',

修改完再執行一次吧!

成功囉~

來看看phpmyadmin是不是真的出現users的Table呢!?

Step 3. 建立資料

建立資料的部分也不用你自己到資料庫裡面一筆一筆key,一樣可以透過artisan幫你完成,但你要先寫好code!在app/database/seeds/下建立一個UsersTableSeeder.php(注意:U要大寫)。建立完成後先不急著開起它來編輯,先看到DatabaseSeeder.php這隻檔案,預設執行時來執行這隻檔案,再由這隻檔案的內容去看你要執行哪隻檔案…直接看code吧!

DatabaseSeeder.php
1
2
3
4
5
6
public function run()
{
Eloquent::unguard();

$this->call('UsersTableSeeder'); // 拿掉原本的註解,注意這邊預設User後是沒有加`s`的記得自己補上,跟檔案名稱對應
}

接下來就是編輯你要寫的內容了,開啟UsersTableSeeder.php,code如下:

UsersTableSeeder.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

class UsersTableSeeder extends Seeder
{

public function run()
{
DB::table('users')->delete(); // 每次執行都先清理資料表單
User::create(array(
'name' => 'lighter',
'username' => 'awesome',
'email' => 'test@gmail.com',
'password' => Hash::make('awesome'),
));

User::create(array(
'name' => 'Tom',
'username' => 'John',
'email' => 'test2@gmail.com',
'password' => Hash::make('awesome')
));
}

}

完成之後到終端機輸入下面的指令

php artisan db:seed

成功囉~這樣以後如果需要很多測試資料,就不用手動一筆一筆操作建立了!而且轉換資料庫也方便很多,不用寫多套SQL語法。