laravel:一对一关系变成一对多关系

mtb9vblg  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(494)

当我创建一对一关系迁移时,laravel会创建一对多关系。
php 7.1和mysql 5.7
模型是:角色和用户。
人物:

public function user()
{
    return $this->hasOne('App\User', 'persona_id', 'id');
}

用户:

public function persona()
{
    return $this->belongsTo('App\Persona', 'persona_id', 'id');
}

迁移:

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('persona_id')->unsigned();
    $table->foreign('persona_id')->references('id')->on('personas')->onDelete('cascade');
    $table->unique(['persona_id', 'id']);
    $table->string('email')->nullable()->unique();
    $table->string('password')->nullable();
    $table->rememberToken();
    $table->timestamps();
});

Schema::create('personas', function (Blueprint $table) {
    $table->increments('id');
    $table->string('tipo');
    $table->integer('cedula')->unsigned()->unique();
    $table->string('primer_nombre');
    $table->string('segundo_nombre')->nullable();
    $table->string('primer_apellido');
    $table->string('segundo_apellido')->nullable();
    /* Agregar demas campos que se requieran */
    $table->timestamps();
});

如何使数据库中创建的关系一个接一个,而不是一对多?目前,这是允许我保存多个用户每人。
谢谢。

fruv7luv

fruv7luv1#

我只想替换:

$table->integer('persona_id')->unsigned();
$table->unique(['persona_id', 'id']);

通过

$table->integer('persona_id')->unique();
4nkexdtk

4nkexdtk2#

仅将唯一索引置于 persona_id :

$table->unique('persona_id');

相关问题