我必须这样做
查询所有具有非空值的MailTask的Deleted_at列 然后从数据库中物理删除它,先删除他的 表MailTaskMailMessage中的关联
我必须先删除关联的数据
,我执行了此功能
MailTask::query()->whereNotNull('deleted_at')->with('mail_task_mail_message')->forceDelete();
但我认为并非如此
这些是迁移中的关系
Schema::create('mail_task_mail_message', function (Blueprint $table) {
$table->id();
$table->unsignedInteger('type');
$table->text('description');
$table->decimal('value', 16, 2);
$table->foreignId('mail_task_id')->constrained('mail_tasks')->onDelete('cascade');
$table->foreignId('mail_message_id')->constrained('mail_messages')->onDelete('cascade');
$table->timestamps();
});
还有这个
Schema::create('mail_tasks', function (Blueprint $table) {
$table->bigIncrements('id');
$table->text('meo_data');
$table->unsignedInteger('state')->default(0);
$table->text('recipients_names');
$table->text('recipients_emails');
$table->unsignedBigInteger('meo_id');
$table->foreign('meo_id')->references('id')->on('meos')->onDelete('cascade');
$table->timestamps();
$table->softDeletes();
});
我的代码可以吗?还是错?
答案 0 :(得分:1)
您的mail_task_mail_message表上有一个级联外键,因此您只需要执行以下操作:
MailTask::whereNotNull('deleted_at')->forceDelete();
您必须使用forceDelete()实际删除寄存器,而不仅仅是设置delete_at列。