📜  外键字符串 laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:37:51.074000             🧑  作者: Mango

Laravel中的外键字符串

在Laravel中,外键通常是通过使用外键字符串来定义的。这个字符串充当了外键的标识符,它有助于将父表和子表关联起来。在本文中,我们将介绍如何在Laravel中使用外键字符串。

定义外键

在Laravel中,我们可以使用Schema构造器来定义表格。定义外键需要通过以下三个步骤:

  1. 在子表中定义一个与父表主键类型一致的列,用于存储父表中行的索引。
Schema::create('posts', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('user_id');
    $table->foreign('user_id')->references('id')->on('users');
});

在这个例子中,我们创建了一个posts表,其中包含一个名为user_id的unsignedInteger类型的列。这个列将用于存储对应父表中行的索引。

  1. 创建一个父表并为其定义一个主键。
Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
});

在这个例子中,我们创建了一个名为users的表,并为其定义了名为id的自增主键。

  1. 在子表中使用外键字符串引用父表主键。
$table->foreign('user_id')->references('id')->on('users');

在这个例子中,我们使用外键字符串将子表中的user_id列与父表中的id列关联起来。这意味着posts表中user_id列的值必须在users表中的id列中存在。

配置外键约束行为

在Laravel中,您可以使用外键字符串配置外键约束行为。这里有几种外键约束行为:

  • CASCADE:当父表中行被删除或更新时,对应子表中行也会被删除或更新。
  • SET NULL:当父表中行被删除或更新时,对应子表中行的外键列会被设置为NULL。
  • RESTRICT:当父表中行被删除或更新时,即使存在子表中行,也会触发错误。
  • NO ACTION:没有任何行动被执行,但是错误将被触发。

以下是如何在外键字符串中配置这些不同的行为:

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('users')->onDelete('set null');
$table->foreign('user_id')->references('id')->on('users')->onDelete('restrict');
$table->foreign('user_id')->references('id')->on('users')->onDelete('no action');
总结

在Laravel中,外键字符串是用于定义外键的一种非常强大的工具。它允许我们将父表和子表关联起来,并配置不同的外键约束行为。希望这篇文章对您有所帮助!