上一篇文章Ruby 程序员学习 laravel 框架笔记 (3)-第一个路由 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_DATABASE
这个是你的数据库的名称,你可以事先创建好。
2. 迁移数据
有了数据库,并且可以连接,还需要表吧。
跟ruby一样,laravel也有migration这样的概念,默认还创建了两个,其中有一个是users表。
放migration的文件位于:database/migrations
。
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
3. 创建表单
往后台填充数据需要表单吧,先来创建路由。
# routes/web.php
Route::get('/users/create', 'UsersController@create');
Route::post('/users', 'UsersController@store');
像上节那样,创建一个action。
# app/Http/Controllers/UsersController.php
public function create()
{
return view('admin.users.create');
}
创建一个view。
# resources/views/admin/users/create.blade.php
<form action="/users" method="POST">
{{ csrf_field() }}
<input type="text" name="name">
<input type="email" name="email">
<input type="password" name="password">
<input type="submit" vaule="Create">
</form>
最后修改一下app/Http/Controllers/UsersController.php
文件如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
class UsersController extends Controller
{
public function index()
{
$users = [
'0' => [
'first_name' => 'Renato',
'last_name' => 'Hysa'
],
'1' => [
'first_name' => 'Jessica',
'last_name' => 'Alba'
]
];
// return $users;
return view('admin.users.index', compact('users'));
}
public function create()
{
return view('admin.users.create');
}
public function store(Request $request)
{
User::create($request->all());
return "success";
}
}
注意use App\User;
这行是添加的。
添加成功后,数据表users会多一行记录的,页面上也会输出"success"
。
完结。