3 表 Laravel 迁移需要建议

Posted

技术标签:

【中文标题】3 表 Laravel 迁移需要建议【英文标题】:3 Table Laravel Migration need advice 【发布时间】:2021-12-23 04:03:59 【问题描述】:

我认为我这样做是正确的。我有一个用户、个人资料和应用程序表。以下是迁移。我认为我在迁移中正确链接了它们,但需要建议以确保。 1 个用户可以拥有 1 个个人资料,但可以拥有多个应用程序。

用户表

        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();
            );
        
    
        

个人资料表

       public function up()
    
        Schema::create('profile', function (Blueprint $table) 
            $table->id();
            $table->integer('user_id')->unsigned();
            $table->string('address')->nullable();
            $table->string('apt')->nullable();
            $table->string('city')->nullable();
            $table->string('state')->nullable();
            $table->string('zipcode')->nullable();
            $table->string('homephone')->nullable();
            $table->string('mobile')->nullable();
            $table->string('occupation')->nullable();
            $table->boolean('over18')->nullable();
            $table->string('homechurch')->nullable();
            $table->string('homechurchcity')->nullable();
            $table->string('pastor')->nullable();
            $table->string('howoftenattend')->nullable();
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        );
    

应用程序

    public function up()
    
        Schema::create('pilgrim_application', function (Blueprint $table) 
            $table->id();
            $table->string('besttimetocall');
            $table->string('nickname');
            
            $table->foreignId('user_id')->constrained('users')->onDelete('cascade');
            $table->foreignId('profile_id')->constrained('profile')->onDelete('cascade');

            $table->timestamps();
        );
   

【问题讨论】:

【参考方案1】:

您的迁移目前是否有效?

首先检查你的迁移文件顺序,例如

0000_user

0001_profile

1000_pilgrim_application

1001_app_two

如果有多个应用程序,您可以使用不同的编号开始迁移,以便在列表中对文件进行分组,如果您想创建多个应用程序,这会很方便。

另外,是否需要在 pilgrim_application 迁移中指定关系用户和配置文件?

通过模型中的关系,您还可以从用户模型访问 pilgrim_application,反之亦然。

$user->profile->pilgrim_application

【讨论】:

以上是关于3 表 Laravel 迁移需要建议的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 删除表,迁移不回滚

laravel5.6 使用迁移创建表

如何迁移:在 laravel 5 中回滚特定表

Laravel 编码技巧一

Laravel/lumen 5.2 从现有数据库生成迁移表

在 Laravel 5 迁移中更新表并添加数据