雄辩的多对多数据透视表是否应该在两个id列中强制实现唯一性? Laravel 5

时间:2015-12-18 16:14:34

标签: laravel laravel-5 eloquent

我认为,在生成简单的数据透视表(多对多)表时,(默认情况下)雄辩会强制执行两个id列的唯一性吗?

或者我做错了什么?

约会模式

public function client()
{
    return $this->belongsToMany('App\Client')->withTimestamps();
}

客户端模型

public function appointment()
{
    return $this->belongsToMany('App\Appointment')->withTimestamps();
}

移植

    $table->integer('appointment_id')->unsigned();
    $table->foreign('appointment_id')->references('id')->on('appointments')->onDelete('cascade');

    $table->integer('client_id')->unsigned();
    $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');

    $table->timestamps();

如果在默认情况下雄辩并没有这样做,我必须手动添加索引:

    $table->unique(array('appointment_id', 'client_id'));

1 个答案:

答案 0 :(得分:1)

Eloquent无法强制执行两个id列的唯一性,因为Eloquent不负责数据库架构/配置。

迁移负责这些内容,因此您必须在迁移中定义唯一性。