📌  相关文章
📜  laravel 8 使用迁移和控制器制作模型 - PHP (1)

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

Laravel 8 使用迁移和控制器制作模型

简介

Laravel 是一个流行的 PHP Web 框架,它提供了一种优雅且简单的方式来构建 Web 应用程序。Laravel 框架提供了许多工具和功能来简化 Web 应用程序开发过程,其中最重要的一些功能是模型、迁移和控制器。

在本教程中,我们将学习如何使用 Laravel 8 中的模型、迁移和控制器来开发一个简单的 Web 应用程序。

模型

Laravel 中的模型是用于在应用程序中处理基础数据的核心组件。模型通常代表一个表或集合中的一行数据。Laravel 中的模型包含以下元素:

  • PHP 类文件:包含一个用于处理数据的类。
  • 数据库表定义:用于定义该模型将使用的表或集合。
  • 模型文档:用于文档化模型的核心功能。

在 Laravel 中,可以使用 artisan 命令行工具自动创建模型。例如,要创建一个名为 User 的模型,可以运行以下命令:

php artisan make:model User

此命令将生成一个名为 User.php 的 PHP 类文件,该文件包含一个用于处理数据的类。

迁移

在 Laravel 中,迁移是一种用于管理数据库的工具。使用迁移,开发人员可以轻松地添加、修改或删除数据库中的表或列。

在 Laravel 中,通过 artisan 命令行工具进行迁移。例如,以下命令将创建一个名为 users 的表格:

php artisan make:migration create_users_table

对于大型的应用程序,可能需要多个迁移文件来处理用户的需求。每当要添加、修改或删除表格时,都需要创建新的迁移文件。

控制器

在 Laravel 中,控制器是处理 HTTP 请求的核心组件。控制器通常包含一个或多个方法,每个方法代表一个特定的 HTTP 动作(例如 GETPOSTPUTDELETE)。

Laravel 中,可以使用以下命令创建控制器:

php artisan make:controller UserController

此命令将生成一个名为 UserController.php 的 PHP 类文件,该文件包含用于处理 HTTP 请求的方法。

使用模型、迁移和控制器制作模型

现在可以使用 Laravel 8 中的模型、迁移和控制器,开发一个简单的 Web 应用程序。

以下代码是一个示例 User 模型:

<?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',
    ];
}

以下代码是一个示例 users 数据库迁移:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    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();
        });
    }

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

以下代码是一个示例 UserController 控制器:

<?php

namespace App\Http\Controllers;

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

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $users = User::all();

        return view('users.index', ['users' => $users]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('users.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $user = new User;

        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = $request->password;

        $user->save();

        return redirect('users');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $user = User::find($id);

        return view('users.show', ['user' => $user]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $user = User::find($id);

        return view('users.edit', ['user' => $user]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $user = User::find($id);

        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = $request->password;

        $user->save();

        return redirect('users');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $user = User::find($id);

        $user->delete();

        return redirect('users');
    }
}

在此应用程序中,我们使用 User 模型来处理数据库中的用户数据、使用 users 数据库迁移来定义数据库中的表格和列,并使用 UserController 控制器来处理 HTTP 请求。

如果想要在 Laravel 8 中学习更多关于模型、迁移和控制器的内容,请查看 Laravel 文档。