---
title: "Ask your Laravel system about subscriptions and customers · Adea"
description: "Adea reads your Eloquent models and scopes and answers management and sales questions about customers and subscriptions."
url: https://adea.app/stack/laravel
---

# Which customers expire this month? Ask the system itself.

In Laravel projects the rules live in Eloquent models, scopes and jobs. Adea reads them and answers questions that would otherwise end up as a request to the developer.

[Start free](https://adea.app/signup) [See the demo](https://adea.app/demo)

## Which customers have a subscription that expires in October?

1. Reading app/Models/Subscription.php
2. Finding the active() scope
3. Fetching subscriptions that expire in October

A question asked of a Laravel system

Which customers have a subscription that expires in October?

Adea's answer

**63 ** customers

Active subscriptions with ends_at in October. 21 of them are on the Pro plan and have not turned on renewal.

## Where the number comes from

The code Adea read `app/Models/Subscription.php:58`

```
public function scopeActive($q) {
  return $q->whereNull('canceled_at')
    ->where('ends_at', '>', now());
}
```

The query it ran

```
SELECT count(*) FROM subscriptions
WHERE canceled_at IS NULL
  AND ends_at >= '2026-10-01'
  AND ends_at <  '2026-11-01'
```

## What you get

### Understands your scopes

"Active" is a scope in the code, not a field in the database. Adea finds it and uses exactly that definition, so the number matches what you see in the admin panel.

### Management asks for themselves

Weekly numbers on renewals, churn and revenue no longer need a report from the developer. Save the question and get the answer every Monday.

### Reads without writing

Adea only gets read access. Nothing runs inside your Laravel app, and queues and jobs are not touched.

## How to connect a Laravel project

Connect the GitHub repo with read access, and create a MySQL or Postgres user that only has SELECT.

```
CREATE USER 'adea_readonly'@'%' IDENTIFIED BY '…';
GRANT SELECT ON your_db.* TO 'adea_readonly'@'%';
```

[Read the setup guide](https://adea.app/docs/connect-database)

## Questions about Laravel

### Does it work with Filament or Nova?

Adea is independent of your admin panel. It reads models and database, so it works whether you use Filament, Nova or something else.

### What about multi-tenant setups?

Tell Adea which column separates customers. The rule becomes an approved understanding that every answer follows.

### Can Adea run against a read replica?

Yes, and we recommend it.

## Other stacks

[Rails](https://adea.app/stack/rails) [Django](https://adea.app/stack/django) [Node.js](https://adea.app/stack/node) [Magento](https://adea.app/stack/magento) [WooCommerce](https://adea.app/stack/woocommerce) [Shopware](https://adea.app/stack/shopware) [Solidus](https://adea.app/stack/solidus)

## What do you want to know?

[Start free](https://adea.app/signup) [Book 20 minutes](mailto:hello@adea.app?subject=20%20minutes%20about%20Adea)
