Helper to retrive a users posts checking between multple dates.

Posted 2 years ago by eddieace

Hello!

I have written a helper function to get all active posts from a user within a specific time span. The problem here is that the condition after orWhereBetween it does not include the user_id which result in getting posts from all users.

This would work if i only would like to check one date, but in this case I would like to check both ends_at and published at to get all active posts that touches a specific time span.

Here is my helper method in my User class.

My question is, how do I solve this?

public function activePosts($from, $to) {
    return $this->hasMany(Post::class)->whereBetween('ends_at', [$from, $to])
        ->orWhereBetween('published_at', [$from, $to])
        ->get();
}

And here is the query

select * from `posts` where `posts`.`user_id` = ? and `posts`.`user_id` is not null and `ends_at` between ? and ? or `published_at` between ? and ?

Please sign in or create an account to participate in this conversation.