Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数据库中删除与具有laravel的其他表关联的行_Php_Laravel_Associations - Fatal编程技术网

Php 从数据库中删除与具有laravel的其他表关联的行

Php 从数据库中删除与具有laravel的其他表关联的行,php,laravel,associations,Php,Laravel,Associations,我的数据库中有4个表 mail_tasks => MailTask (class) mail_messages => MailMessage (class) meos => Meo (class) mail_recipients => MailRecipient (class) 我需要删除该列表中包含“deleted_at”的非空值的前3个表中的所有行,换句话说,使用forceDelete删除行(该行以前使用softdelete删除) 问题是,我需要首先删除每个表与不同

我的数据库中有4个表

mail_tasks => MailTask (class)
mail_messages => MailMessage (class)
meos => Meo (class)
mail_recipients => MailRecipient (class)
我需要删除该列表中包含“deleted_at”的非空值的前3个表中的所有行,换句话说,使用forceDelete删除行(该行以前使用softdelete删除)

问题是,我需要首先删除每个表与不同表之间的关联

MailTask is associated with Meos table
Meos is associated with MailRecipient
邮件任务迁移和关联

    $table->foreign('meo_id')->references('id')->on('meos')->onDelete('cascade');
    $table->foreign('meo_id')->references('id')->on('meos')->onDelete('cascade');
邮件收件人迁移和关联

    $table->foreign('meo_id')->references('id')->on('meos')->onDelete('cascade');
    $table->foreign('meo_id')->references('id')->on('meos')->onDelete('cascade');
MEO迁移和关联

    $table->foreign('location_id')->references('id')->on('locations')->onDelete('cascade');
    $table->foreign('business_type_id')->references('id')->on('business_types')->onDelete('cascade');
public function handle()
{
   $mailMessage = MailMessage::query()->whereNotNull('deleted_at');
   $mailMessage->forceDelete();
   $mailTask = MailTask::query()->whereNotNull('deleted_at');
   $mailTask->forceDelete();
   $meo = Meo::query()->whereNotNull('deleted_at');
   $meo->forceDelete();
}
  • 我需要删除“deleted_all”不为空的邮件
  • 我需要删除MailTask,其中“deleted_all”不为null,并删除与Meo的第一个关联
  • 我需要删除“deleted_all”不为空的Meo,并删除与邮件收件人的第一个关联
  • 我有这个,但我不明白如何删除关联

        $table->foreign('location_id')->references('id')->on('locations')->onDelete('cascade');
        $table->foreign('business_type_id')->references('id')->on('business_types')->onDelete('cascade');
    
    public function handle()
    {
       $mailMessage = MailMessage::query()->whereNotNull('deleted_at');
       $mailMessage->forceDelete();
       $mailTask = MailTask::query()->whereNotNull('deleted_at');
       $mailTask->forceDelete();
       $meo = Meo::query()->whereNotNull('deleted_at');
       $meo->forceDelete();
    }
    
    我这样做没关系吧?还是我需要做更多的事情