Query with multiple BETWEEN conditions

Seems like it was my own logic that was flawed. My query did not take from and to periods that are inside reservedFrom and reservedTo into account.

Added a or clause to the find method.

public function findReservationsInDates($q, $options) {

	    /** @var Query $q */
    	if(!isset($options['from']))$options['from'] = Time::now();
    	if(!isset($options['to']))$options['to'] = Time::now();

    	return $q->where(function($exp) use ($options) {

		    /** @var QueryExpression $exp */
		    $orCond = $exp->or_(function($or) use ($options) {
			    /** @var QueryExpression $or */
			    $or = $or
				    ->between('reservedFrom', $options['from'], $options['to'], 'datetime')
				    ->between('reservedTo', $options['from'], $options['to'], 'datetime');

			    return $or->add($or->and_(function($and) use ($options) {

				    /** @var QueryExpression $and */
				    return $and
					    ->lte('reservedFrom', $options['from'])
					    ->gte('reservedTo', $options['to']);
			    }));
		    });
		    return $exp->add($orCond);

	    });
    }

Sorry for anyone starting to help me with this issue.