mysql - 通过 eloquent 在 Laravel 中更新文件夹计数级联删除

标签 mysql laravel eloquent

我有 3 张 table :

  1. 任务
  2. 文件夹
  3. 文件夹任务

任务表将包含所有task_name文件夹表将包含folder_nametask_countFolder Tasks 是一个数据透视表,它将存储 folder_idtask_id

所有表都具有多对多关系。

我添加了级联删除任务。因此,如果我删除一个任务,那么它将删除所有地方,包括数据透视表。我正在使用 Eloquent 删除删除任务。这工作正常

但是,一旦删除任务,我就需要更新文件夹表中每个文件夹的任务计数。

由于一个任务可以存储在多个文件夹中,因此级联删除任务时很难更新所有文件夹的 task_count 计数。我被困在这里了。

如何更新受影响文件夹的所有 task_count

最佳答案

您可以使用mysql触发器。这是示例。

USE `test`;
DELIMITER 
$$
CREATE TRIGGER `tasks_ADEL` 
AFTER DELETE ON tasks FOR EACH ROW
-- Edit trigger body code below this line. Do not edit lines above this one
BEGIN
   update folder as f right join folder_tasks as ft on f.id = ft.folder_id set task_count = task_count + 1 where ft.task_id = OLD.id
END;
$$

在这里您可以找到使用示例https://www.w3resource.com/mysql/mysql-triggers.php#MTAD

关于mysql - 通过 eloquent 在 Laravel 中更新文件夹计数级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56326487/

相关文章:

mysql - 如何在一次查询中获取每个客户的 100 条记录

Laravel/Eloquent 模型关系查看器

php - Laravel ORM 从自引用表中获取 N 级层次结构 JSON

php - Laravel NotFoundHttpException 虽然路由存在

php - Eloquent:从 'max' -> `hasMany` 关系中获取 `hasOne` 值

php - Laravel 在同一张表中返回 parent 的 child

mysql - 您能否从具有 MIN 或 MAX 值的行中获取不同的列?

php - MySQL 准备语句失败

mysql - 由于选择查询而锁定表?

php - Laravel Passport 在收到访问 token 后不验证用户身份