如何解决删除表的关系和行laravel,artisan-使用命令运行的作业
我正在尝试首先从表中删除具有其关联的行,为此,我需要删除属于每一行的关联
示例
类MailTask
有一个名为'mail_taks'
的表,并且与MailMessage
类相关联,相关的表是'mail_task_mail_message'
public function mailMessages()
{
return $this->belongsToMany(MailMessage::class,'mail_task_mail_message','mail_task_id','mail_message_id')
->withPivot('type','description','value')
->withTimestamps();
}
我必须这样做
- 查询所有非null值的delete_at列的MailTask并将其从数据库中物理删除,首先从表MailTaskMailMessage中删除他的关联
- 查询所有非null值的MailMessage的Deleted_at列,并从数据库中物理删除它。
- 查询所有非null值的Delete_at列Meo,然后从数据库中物理删除它,首先从表MailRecipient中删除他的关联
我尝试了一个foreach,只是出于目的而第一步,但我认为这是不正确的,显然我应该使用级联,但是我不知道该怎么做
这些是表具有的关联
mail_messages无法从任何表接收数据
“ mail_task_mail_message”与“ mail_tasks”表具有关联 通过“ mail_task_id”列,它还具有另一个关联 通过“ mail_message_id”列使用mail_messages表
和表“ mail_tasks”通过该列具有关联 “ meo_id”和表“ meos”的ID
我只需要第一个数字的帮助,我认为我用简单的foreach方法做得不好
public function handle()
{
$mailTasks = MailTask::query()->whereNotNull('deleted_at');
$see = $mailTasks;
foreach ($mailTasks as $mailTask){
$mailTaskId = $mailTask->id;
MailTask::with('mailMessages')->from('mail_task_mail_message')->where('mail_task_id','=',$mailTaskId)->forceDelete();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。