DEV Community

Cover image for Dynamic queries with Laravel
Rafael França
Rafael França

Posted on • Originally published at Medium

2 2

Dynamic queries with Laravel

When developing a project for a client, a doubt arose: how create a dynamic query using only Eloquent?

Maybe, you can think: “It’s easy! We can use the method when”.
But that wasn’t what I intended, therefore, before continue, let me show you better the problem.

Imagine that I have a schedule, and I need create an event that start and finish with a difference of weeks and has a repetition in specific days of week. E.g.:

I, Rafael, intent elevate my English and Spanish level, therefore, intent study English by one hour, in every Sunday, Wednesday and Friday, during a one month; and, Spanish, every Tuesday, Thursday and Saturday.

Now, imagine that you receive the dates using a numeric representation, in that 0 is equals a Monday, and 6 is a Saturday, thus we can represent the received data by the vector below:

{
    "frequency": "daily",
    "days": [1, 3, 5],
    "date_start": "29/05/2020",
    "date_end": "29/06/2020",
    "hour_start": "20:00",
    "hour_end": "21:00"
}
Enter fullscreen mode Exit fullscreen mode

As every people that want to study, not like be interrupted to make another thing, therefore, we need grant this event not collide with another. So, more one time, how make this, using only Eloquent?

The response is simple. See above:

[...]

})->when(request()->get('frequency') === "daily", function (Builder $subquery) {
    foreach (request()->get('days') as $day) {
        $subquery->where('days', 'LIKE', "%$day%");
    }
    return $subquery;
});

[...]
Enter fullscreen mode Exit fullscreen mode

What do you think about the tip?

Soon I back with more! :)

PS: Originally posted on my account on Medium.

Cover photo by Chris Ried on Unsplash.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay