📅  最后修改于: 2023-12-03 15:17:16.796000             🧑  作者: Mango
在 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 通过迁移生成模型了。通过使用迁移和模型,我们可以更加简单方便地创建和管理数据库表,并在代码中快速便捷地进行数据操作。