# 4. 在數據庫中創建一條數據
> 2017\.08.09 代碼全部修改,加了動圖,重新上傳了截圖
上一篇文章 [Ruby 程序員學習 laravel 框架筆記 (3)-第一個路由 UsersController](https://www.rails365.net/articles/ruby-cheng-xu-yuan-xue-xi-laravel-kuang-jia-bi-ji-3-di-yi-ge-lu-you-userscontroller) 我們講了如何創建一個 controller,但是在實際應用中,我們通常會把數據存到數據庫中。
這一節我們來聊聊數據庫方面的知識。
## 1. 配置數據庫
首先打開 `.env` 文件。
找到數據庫配置的地方改一下,內容如下:
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog_dev
DB_USERNAME=root
DB_PASSWORD=
```
`DB_CONNECTION` 表示你要用 `mysql` 作為數據庫。
`DB_HOST` 數據庫服務器地址,如果是本地,就選擇 `127.0.0.1`。
`DB_DATABASE` 這個是你的數據庫的名稱,你可以事先創建好。
`DB_USERNAME` 數據庫連接的用戶名。
`DB_PASSWORD` 數據庫連接的密碼。
## 2. 遷移數據
有了數據庫,并且可以連接,還需要表吧。
跟 ruby 一樣,laravel 也有 migration 這樣的概念,默認還創建了兩個,其中有一個是 users 表。
放 migration 的文件位于:`database/migrations`。
```
// database/migrations/2014_10_12_000000_create_users_table.php
<?php
...
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
```
執行遷移的命令如下:
```
php artisan migrate
```
這樣在數據庫中就會創建一張表,它的名字叫 `users`。

## 3. 創建路由
往后臺填充數據需要表單吧,先來創建路由。
```
// routes/web.php
<?php
// 這個是表單的頁面使用路由
Route::get('/users/create', 'UsersController@create');
// 這個創建users記錄對應的動作使用的路由
Route::post('/users', 'UsersController@store');
```
兩個路由,一個是顯示表單用的,另一個是表單提交后使用的路由。
## 4. 創建路由對應的 action
接下來,要創建這兩個路由對應的 action。
像上一篇文章那樣,先創建第一個 action,這個 action 是對應第一個路由 `/users/create` 。
```
// app/Http/Controllers/UsersController.php
<?php
...
class UsersController extends Controller
{
...
public function create()
{
return view('admin.users.create');
}
}
```
然后創建一個 view,對應剛剛創建的第一個 action。
```
// resources/views/admin/users/create.blade.php
<form action="/users" method="POST">
// 這個csrf是一定要添加的,這個跟rails框架提供的csrf機制類似
{{ csrf_field() }}
<input type="text" name="name">
<input type="email" name="email">
<input type="password" name="password">
<input type="submit" vaule="Create">
</form>
```
最后來添加第二個路由 `/users` 對應的 action 文件,內容如下:
```
// app/Http/Controllers/UsersController.php
<?php
...
// 注意這行,是新添加的,要去加載 User 這個 model。
use App\User;
class UsersController extends Controller
{
...
public function create()
{
return view('admin.users.create');
}
// store這個action是新添加的
public function store(Request $request)
{
User::create($request->all());
return "success";
}
}
```
下面來一張動圖演示一下效果:

添加成功后,頁面上也會輸出 `"success"`。
同時數據庫也會多一行記錄,如下:

完結。
下一篇:[Ruby 程序員學習 laravel 框架筆記 (5)-簡單的用戶認證](https://www.rails365.net/articles/ruby-cheng-xu-yuan-xue-xi-laravel-kuang-jia-bi-ji-5-jian-dan-de-yong-hu-ren-zheng)
- 0. 介紹
- 1. php 開發環境安裝
- 2. 跑 laravel 的 hello world
- 3. 第一個路由 UsersController
- 4. 在數據庫中創建一條數據
- 5. 簡單的用戶認證
- 6. 修改 User model
- 7. User model 的 getter 方法
- 8. view 的更多知識
- 9. 在 view 中共享變量
- 10. blade layout
- 11. 使用 @include 來整理 view
- 12. Blade if/else/unless/or
- 13. factories, faker and seeding
- 14. Blade foreach
- 15. 分頁
- 16. 用中間件來限制用戶必須登錄
- 17. Route group
- 18. CURD 實踐之改變用戶表結構
- 19. CURD 實踐之為新添加的屬性修改注冊功能
- 20. CURD 實踐之用 username 來代替 email 登錄
- 21. CURD 個人中心頁面
- VIM 的 laravel 插件
- VIM 中有效地查看 php 源碼