PHPackages                             benjamin-rqt/data-watcher-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. benjamin-rqt/data-watcher-bundle

ActiveSymfony-bundle[Database &amp; ORM](/categories/database)

benjamin-rqt/data-watcher-bundle
================================

Symfony bundle for database anomaly detection with email notifications

0.0.2(2w ago)29MITPHPPHP &gt;=8.2

Since May 19Pushed 1w agoCompare

[ Source](https://github.com/BenjaminRqt/data-watcher-bundle)[ Packagist](https://packagist.org/packages/benjamin-rqt/data-watcher-bundle)[ RSS](/packages/benjamin-rqt-data-watcher-bundle/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (21)Versions (7)Used By (0)

benjamin-rqt/data-watcher-bundle
================================

[](#benjamin-rqtdata-watcher-bundle)

Symfony bundle for database anomaly detection with email notifications and execution history.

[![ChatGPT Image 5 juin 2026, 15_14_45](https://private-user-images.githubusercontent.com/14540524/603478252-83fd00cc-d63c-4c7f-869b-1b8093b993be.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NDM5NDcsIm5iZiI6MTc4NDU0MzY0NywicGF0aCI6Ii8xNDU0MDUyNC82MDM0NzgyNTItODNmZDAwY2MtZDYzYy00YzdmLTg2OWItMWI4MDkzYjk5M2JlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEwMzQwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNmODVjODhhNGU0OTljOWFkZTI3YjhlMTdjNTRhMGNiYmRkOTkxOWM3Zjg0YmEwZDFlZTFhYjJmNjJiMDNhMGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9._PpXri5mvTF2fBOT_uVRMgM7es8x6_grdMAcrLmmz6Q)](https://private-user-images.githubusercontent.com/14540524/603478252-83fd00cc-d63c-4c7f-869b-1b8093b993be.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NDM5NDcsIm5iZiI6MTc4NDU0MzY0NywicGF0aCI6Ii8xNDU0MDUyNC82MDM0NzgyNTItODNmZDAwY2MtZDYzYy00YzdmLTg2OWItMWI4MDkzYjk5M2JlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEwMzQwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNmODVjODhhNGU0OTljOWFkZTI3YjhlMTdjNTRhMGNiYmRkOTkxOWM3Zjg0YmEwZDFlZTFhYjJmNjJiMDNhMGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9._PpXri5mvTF2fBOT_uVRMgM7es8x6_grdMAcrLmmz6Q)Requirements
------------

[](#requirements)

- PHP &gt;= 8.2
- Symfony 6.3, 7.0 or 8.0

### Symfony components

[](#symfony-components)

- framework-bundle
- messenger
- mailer
- twig-bundle
- scheduler

### Doctrine

[](#doctrine)

- doctrine/dbal ^3.0 or ^4.0
- (Optional) doctrine/orm (if you use `AbstractDoctrineCheck`)

### External dependencies

[](#external-dependencies)

- dragonmantank/cron-expression (required for cron-based scheduler triggers)

---

Installation
------------

[](#installation)

### 1. Declare the bundle in `composer.json`

[](#1-declare-the-bundle-in-composerjson)

```
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/BenjaminRqt/data-watcher-bundle"
        }
    ]
}
```

### 2. Install

[](#2-install)

```
composer require benjamin-rqt/data-watcher-bundle
```

### 3. Register the bundle (if Flex doesn't do it automatically)

[](#3-register-the-bundle-if-flex-doesnt-do-it-automatically)

```
// config/bundles.php
return [
    // ...
    BenjaminRqt\DataWatcherBundle\DataWatcherBundle::class => ['all' => true],
];
```

### 4. Create the bundle configuration

[](#4-create-the-bundle-configuration)

```
# config/packages/data_watcher.yaml
data_watcher:
    from_email: 'datawatcher@myapp.com'
    recipients:
        - 'admin@myapp.com'
    app_name: 'My Application' # Optional, used in email subjects and templates
```

### 5. Configure Messenger for the scheduler

[](#5-configure-messenger-for-the-scheduler)

```
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            scheduler_data_watcher:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
        routing:
            BenjaminRqt\DataWatcherBundle\Scheduler\Message\RunCheckMessage: scheduler_data_watcher
```

### 6. Environment variables (`.env.local`)

[](#6-environment-variables-envlocal)

```
MAILER_DSN=smtp://user:password@smtp.myserver.com:587
MESSENGER_TRANSPORT_DSN=doctrine://default
```

### 7. Setup the database table

[](#7-setup-the-database-table)

This bundle uses a custom table `data_watcher_run` to store the history of checks. Run the following command to create it:

```
php bin/console data-watcher:setup
```

---

Add a check in your application
-------------------------------

[](#add-a-check-in-your-application)

Create a class in **your app** (not in the bundle):

### With raw SQL

[](#with-raw-sql)

```
