📜  Laravel 通过迁移生成模型 (1)

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

Laravel 通过迁移生成模型

在 Laravel 中,我们可以使用迁移(Migration)来创建和管理数据库表。而模型(Model)则是用来与数据库表进行交互的对象,可以在模型内部封装各种数据查询和操作方法。

使用迁移来生成模型可以自动化模型的创建过程,同时也方便了维护和更新数据库。接下来,本文将介绍如何使用 Laravel 通过迁移生成模型。

创建迁移文件

首先,我们需要使用 Artisan 命令行工具来创建迁移文件。在命令行中执行以下命令:

php artisan make:migration create_users_table --create=users

其中,create_users_table 是迁移文件的名称,--create=users 表示我们要创建一个名为 users 的表。

执行完上述命令后,Laravel 会自动在 database/migrations 目录下创建一个迁移文件,文件名类似于 2021_01_01_000000_create_users_table.php,其中 2021_01_01_000000 是时间戳,表示该迁移文件的创建时间。

编写迁移文件内容

打开刚刚创建的迁移文件,可以看到如下代码片段:

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');
    }
}

其中,up() 方法表示执行迁移时需要执行的代码,down() 方法表示回滚迁移时需要执行的代码。在 Schema::create() 方法中,我们可以定义表的结构和各个字段的类型、属性和关系等。

生成模型文件

接下来,我们就可以使用 Artisan 命令行工具生成相应的模型文件了。在命令行中执行以下命令:

php artisan make:model User

其中,User 是模型的名称,Laravel 会自动根据该名称在 app 目录下生成一个名为 User.php 的模型文件。

在模型文件中,我们需要声明该模型要使用的数据表名称和各个字段的名称、属性和关系等。示例如下:

namespace App\Models;

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

class User extends Model
{
    use HasFactory;

    protected $table = 'users';

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

    protected $hidden = [
        'password',
        'remember_token',
    ];

    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

其中,$table 属性表示该模型对应的数据表名称,$fillable 属性表示可以被批量赋值的字段名称,$hidden 属性表示在数组或 JSON 序列化时需要隐藏的字段名称,posts() 方法表示该模型与 Post 模型之间的一对多关系。

使用生成的模型

完成以上步骤后,我们就可以在代码中使用该生成的模型了。例如,我们可以在控制器中使用如下代码片段来查询用户数据:

use App\Models\User;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();

        return view('user.index', compact('users'));
    }
}

其中,User::all() 方法表示查询所有用户数据。

到此为止,我们就可以使用 Laravel 通过迁移生成模型了。通过使用迁移和模型,我们可以更加简单方便地创建和管理数据库表,并在代码中快速便捷地进行数据操作。