索引和外键
我们已经介绍了如何创建,修改和删除字段,让我们接着介绍索引和如何关联表
如果你不熟悉索引,不用索引的话,也可以正常运行,但是他们对于提升性能有重要作用,我建议你读一下这部分内容,但是你觉得暂时没必要的话,你可以跳过这部分
添加索引
例子5-3显示了如何给字段添加索引
// After columns are created...
$table->primary('primary_id'); // Primary key; unnecessary if used increments()
$table->primary(['first_name', 'last_name']); // Composite keys
$table->unique('email'); // Unique index
$table->unique('email', 'optional_custom_index_name'); // Unique index
$table->index('amount'); // Basic index
$table->index('amount', 'optional_custom_index_name'); // Basic index
注意第一个例子,primary并不是必须的,如果你使用的是increments() or bigIncrements()来创建索引,那么会自动添加自增主键
删除索引
示例5-4显示如何删除索引
$table->dropPrimary('contacts_id_primary');
$table->dropUnique('contacts_email_unique');
$table->dropIndex('optional_custom_index_name');
// If you pass an array of column names to dropIndex, it will // guess the index names for you based on the generation rules
$table->dropIndex(['email', 'amount']);
添加和移除外键
在Laravel内给字段添加外键是很容易的.
$table->foreign('user_id')->references('id')->on('users');
这里我们给user_id添加了外键,来引用user表的id字段
如果我们想指定外键约束,也可以使用onDelete()和onUpdate()来实现。例如
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade')
要删除一个外键,我们可以通过引用它的索引名来删除它(索引名是通过组合被引用的列和表的名称自动生成的)。
$table->dropForeign('contacts_user_id_foreign');
或者将它在本地表中引用的字段数组传递给它
$table->dropForeign(['user_id']);
Last updated
Was this helpful?