2017.08.09 代码全部修改,加了动图,重新上传了截图

上一篇文章 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_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)-简单的用户认证

results matching ""

    No results matching ""