我认为,在生成简单的数据透视表(多对多)表时,(默认情况下)雄辩会强制执行两个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'));
答案 0 :(得分:1)
Eloquent无法强制执行两个id列的唯一性,因为Eloquent不负责数据库架构/配置。
迁移负责这些内容,因此您必须在迁移中定义唯一性。