📜  一键写入数据库 laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:06:10.240000             🧑  作者: Mango

一键写入数据库 Laravel - PHP

Laravel 是一个优秀的 PHP 框架,它提供了一个简洁、优雅的语法,简单易用,同时也拥有丰富的功能。数据库操作是 Laravel 的重要特性之一,通过 Laravel 的数据库操作,我们可以快速、方便地处理各种业务逻辑。本文将介绍如何使用 Laravel 实现一键写入数据库的功能。

准备工作

在开始介绍 Laravel 的数据库操作之前,我们需要进行一些准备工作。

安装 Laravel

首先,我们需要安装 Laravel。Laravel 官方提供了详细的安装文档。这里以使用 Composer 安装为例,执行以下命令完成 Laravel 的安装:

composer create-project --prefer-dist laravel/laravel my-project
配置数据库

安装完成后,我们需要配置数据库连接。在 Laravel 的 .env 文件中,可以配置数据库的相关信息。例如:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

根据实际情况修改配置信息。

创建数据库表

在进行数据库操作之前,我们需要先创建数据库表。在 Laravel 中,可以使用迁移(Migration)来实现数据库表的创建。执行以下命令创建迁移文件:

php artisan make:migration create_users_table --create=users

然后在 database/migrations 目录下找到相应的迁移文件,在 up 方法中编写创建数据表的代码:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

运行以下命令执行迁移文件:

php artisan migrate

至此,数据库表的创建就完成了。

使用 Laravel 写入数据库

在完成了上述准备工作之后,我们就可以开始使用 Laravel 实现一键写入数据库的功能了。

创建模型

在 Laravel 中,模型是操作数据表的重要组成部分。模型类通常都是放置在 app/Models 目录下的。执行以下命令创建模型类:

php artisan make:model Models/User

然后在 app/Models/User.php 文件中定义模型类:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
        'email',
        'password',
    ];
}

$fillable 属性用于指定可以批量赋值的字段。这里我们只允许 nameemailpassword 进行批量赋值。

编写控制器

接下来,我们需要编写控制器,在控制器中实现一键写入数据库的功能。执行以下命令创建控制器:

php artisan make:controller UserController

然后在 app/Http/Controllers/UserController.php 中编写控制器的代码:

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function store(Request $request)
    {
        $data = $request->only(['name', 'email', 'password']);
        User::create($data);
        return redirect('/users')->with('success', 'User has been created successfully.');
    }
}

store 方法用于读取表单数据,创建 User 模型并写入数据库。with 方法用于向前端传递成功的提示信息。

编写路由

最后,我们需要在 web.php 文件中定义路由,将请求与控制器的方法绑定起来。

use App\Http\Controllers\UserController;

Route::get('/users/create', function () {
    return view('users.create');
});

Route::post('/users', [UserController::class, 'store']);

这里我们定义了两个路由,一个是 GET 请求用于显示表单,另一个是 POST 请求用于将表单数据写入数据库。

创建表单

resources/views/users 目录下创建 create.blade.php 文件,编写表单代码:

<form action="/users" method="POST">
    @csrf
    <div class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" id="name" name="name">
    </div>
    <div class="form-group">
        <label for="email">Email address</label>
        <input type="email" class="form-control" id="email" name="email">
    </div>
    <div class="form-group">
        <label for="password">Password</label>
        <input type="password" class="form-control" id="password" name="password">
    </div>
    <button type="submit" class="btn btn-primary">Create</button>
</form>

在创建表单时,我们需要使用 Laravel 的表单辅助函数 @csrf 生成 CSRF Token,以保证表单的安全性。

到此,我们已经完成了使用 Laravel 实现一键写入数据库的功能。当用户提交表单时,控制器将自动读取表单数据并将数据写入数据库。