我正在用laravel构建一个API,并试图让迁移发挥作用.然而,这次迁移失败了Method Illuminate\Database\Schema\Blueprint::cascadeOnDelete does not exist.

public function up(): void
{
    Schema::create('stuff', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('image');
        $table->timestamps();

        $table->cascadeOnDelete();
    });
}

我的应用程序是laravel 10,但该功能位于laravel 10和11的docs中.为什么这个方法不存在呢?

推荐答案

cascadeOnDelete()方法在类Illuminate\Database\Schema\ForeignIdColumnDefinition上可用,而在类Illuminate\Database\Schema\Blueprint上不可用,这是合乎逻辑的,因为您在外部密钥上添加了CASCADE约束.

您可能打算写这样的东西:

$table->foreignId("key_id")->constrained()->cascadeOnDelete();

请注意,所有外部键约束都添加在constrained()方法之后.

Php相关问答推荐

PHP DOMDocument忽略第一个表S结束标记

在Woocommerce变量产品中的标签附近显示所选属性选项名称

如何使用这种格式构建XML?

在Symfony 6.4中将工作流动态添加到服务

Chillerlan/php-iOS名称字段的QR vCard错误

如何从该字符串中删除这些图标转换的ASCII问号字符?

创建一个Woocommerce我的帐户订单页面,仅显示已完成的订单

Mac 上安装 php 时出现 Homebrew 错误

.htaccess 重写规则问题

根据所选付款方式更改 WooCommerce 提交结帐按钮文本

在 groupBy laravel 5.7 中 Select 多列

仅在管理员新订单通知中显示WooCommerce订单商品自定义元数据

设置GA4 PHP API的setSubject以允许访问所有管理员账户属性

如何在PHP中对多个脚本调用进行排队?

为 WordPress 页面创建新功能

Laravel 8:会话不适用

从 CSV 文件 seeder 数据库时的额外行

使用 GROUP_CONCAT 规范化/转置来自查询的数据

如果 static:: 被解析为B,为什么 PHP 会执行A的方法

WordPress 函数 get_post(post_id) 是否查询数据库?