首页 > 解决方案 > laravel有没有办法制作3个表,一个表属于2个不同的表,具有一对一的关系

问题描述

laravel有没有办法制作,一对一的关系,一张表属于两个不同的表一对一的关系。

我正在尝试建模,一个基于 laravel 的项目,它正在投票给部长。

这是我的三个模型。

成员迁移。例如:成员作为用户进行身份验证

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

2.ministers迁移文件

public function up()
    {
        Schema::create('ministers', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->mediumText('description');
            $table->string('image')->default('no-image.jpg');
            $table->unsignedInteger('votes')->default('0');
            $table->boolean('status')->default('0');
            $table->timestamps();
        });
    }

3.voters迁移文件

 public function up()
    {
        Schema::create('voters', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('phone');
            $table->enum('education', ['primary', 'intermediate', 'high-school', 'university' ] )->nullable(false)->default('primary');
            $table->string('country');
            $table->unsignedBigInteger('minister_id');
            $table->foreign('minister_id')->references('id')->on('ministers');
            $table->unsignedBigInteger('member_id');
            $table->foreign('member_id')->references('id')->on('members');
            $table->timestamps();
        });
    }

此选民迁移属于成员和部长,先生关联一位选民,用户关联一位选民。

这种正确的建模方法也是如此,这样的系统。我希望每个注册会员填写投票表,其中选择要投票的部长的下拉字段。并保存该表单,创建一个新的选民实例。我还想要一个部长投票字段在创建新的选民实例时增加两次。

标签: phpmysqllaraveleloquentone-to-one

解决方案


推荐阅读