Hi,
?start_date[]=(ge)2018-08-01&start_date[]=(le)2018-08-02
translates to the following MySQL query:
WHERE `start_date` >= 2018-08-01
AND
`start_date` <= 2018-08-02
Which is the expected result. However,
?instances:start_date[]=(ge)2018-08-01&instances:start_date[]=(le)2018-08-02
becomes
WHERE EXISTS
(
SELECT *
FROM `expedition_instances`
WHERE `expeditions`.`id` = `expedition_instances`.`expedition_id`
AND `start_date` >= '2018-08-01')
AND
EXISTS
(
SELECT *
FROM `expedition_instances`
WHERE `expeditions`.`id` = `expedition_instances`.`expedition_id`
AND `start_date` <= '2018-08-02')
The expected result is
WHERE EXISTS
(
SELECT *
FROM `expedition_instances`
WHERE `expeditions`.`id` = `expedition_instances`.`expedition_id`
WHERE `start_date` >= 2018-08-01
AND `start_date` <= 2018-08-02 )
Feel free to change the issue's title, I wasn't able to think of any better name for it atm.
Edit 1
The constraints looks correctly grouped into instances:start_date:
/expeditions?with[]=instances&instances:start_date[]=(ge)2018-08-01&instances:start_date[]=(le)2018-08-02
array(1) {
["instances:start_date"]=>
array(2) {
[0]=>
object(Jedrzej\Searchable\Constraint)#715 (3) {
["operator":protected]=>
string(2) ">="
["value":protected]=>
string(10) "2018-08-01"
["is_negation":protected]=>
bool(false)
}
[1]=>
object(Jedrzej\Searchable\Constraint)#716 (3) {
["operator":protected]=>
string(2) "<="
["value":protected]=>
string(10) "2018-08-02"
["is_negation":protected]=>
bool(false)
}
}
}
Edit 2
I think that all constraints of the group should be applied when doing
$builder->whereHas($relation, function (Builder $builder) use ($field, $mode) {
$this->doApply($builder, $field, $mode);
});
Something like
$builder->whereHas($relation, function (Builder $builder) use ($constraints, $mode) {
foreach($constraints as $constraint){
$this->doApply($builder, $constraint->field, $mode);
}
});
Of course that's just hypothetical, there is no access to the group of the same constraints as they are isolated in buildConstraints (Jedrzej/Searchable/SearchableTrait.php#L120)
Hi,
translates to the following MySQL query:
Which is the expected result. However,
becomes
The expected result is
Feel free to change the issue's title, I wasn't able to think of any better name for it atm.
Edit 1
The constraints looks correctly grouped into
instances:start_date:Edit 2
I think that all constraints of the group should be applied when doing
Something like
Of course that's just hypothetical, there is no access to the group of the same constraints as they are isolated in
buildConstraints(Jedrzej/Searchable/SearchableTrait.php#L120)