try {
$r = DB::table(self::$_table)->orderBy('lft');
if (App::hasVariant()) {
- $r->whereRaw('variant IS NULL OR JSON_CONTAINS(variant, \'["' . $variant . '"]\')');
+ $r->whereRaw('(variant IS NULL OR JSON_CONTAINS(variant, \'["' . $variant . '"]\'))');
}
static::$_pagesList[$variant] = $r->get()->pluck('name', 'id');
} catch (Exception $e) {
$variant = App::getVariant();
}
if (App::hasVariant()) {
- return $this->whereRaw('variant IS NULL OR JSON_CONTAINS(variant, \'["' . $variant . '"]\')');
+ // Raw WHERE statement containing an OR clause must be wrapped in parentheses to contain the logic.
+ // Otherwise, it will cause unexpected results when used with other WHERE statements in the QueryBuilder
+ return $this->whereRaw('(variant IS NULL OR JSON_CONTAINS(variant, \'["' . $variant . '"]\'))');
}
return $this;
}