[top-think/think]数据库事件类型补全,可增加before_update和before_insert等事件

2024-01-31 894 views
7

TP6官方文档中只提供部分数据库事件,不如模型事件齐全;当需要多Db和Model的增删改成都进行监听时,只能使用Db事件,而Db事件不齐全,相关业务需求无法实现。 (think\db\PDOConnection)新增before_update事件示例:

  /**
     * 更新记录
     * @access public
     * @param BaseQuery $query 查询对象
     * @return integer
     * @throws PDOException
     */
    public function update(BaseQuery $query): int
    {
        $query->parseOptions();

        $flag = $this->db->trigger('before_update', $query);
        if($flag === true) return 0;

        // 生成UPDATE SQL语句
        $sql = $this->builder->update($query);

        // 执行操作
        $result = '' == $sql ? 0 : $this->pdoExecute($query, $sql, $query->getBind());

        if ($result) {
            $this->db->trigger('after_update', $query);
        }

        return $result;
    }

回答