Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/Field/Addresses.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ public static function dbType(): array|string|null
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
/** @var self $field */
$field = reset($instances);
Expand All @@ -133,7 +133,9 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
}

if ($value === ':empty:') {
return $query->whereNotExists($exists);
$query->whereNotExists($exists);

return;
}

if ($value !== ':notempty:') {
Expand All @@ -147,7 +149,7 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
$exists->whereIn("addresses_$ns.id", $ids);
}

return $query->whereExists($exists);
$query->whereExists($exists);
}

/**
Expand Down
16 changes: 10 additions & 6 deletions src/Field/BaseOptionsField.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,16 +91,18 @@ public static function dbType(): string
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
if (! static::$multi) {
return parent::modifyQuery($query, $instances, $value);
parent::modifyQuery($query, $instances, $value);

return;
}

$param = QueryParam::parse($value);

if (empty($param->values)) {
return $query;
return;
}

if ($param->operator === QueryParam::NOT) {
Expand All @@ -113,7 +115,7 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
$valueSql = self::valueColumn($instances);

if ($valueSql === null) {
return $query;
return;
}

$isEmptyValueParam = fn (mixed $value): bool => is_string($value) &&
Expand All @@ -134,13 +136,15 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
};

if ($negate && Collection::make($param->values)->doesntContain($isEmptyValueParam)) {
return $query->where(function (Builder $query) use ($valueSql, $applyConditions) {
$query->where(function (Builder $query) use ($valueSql, $applyConditions) {
$query->whereNull($valueSql)
->orWhereNot($applyConditions);
});

return;
}

return $query->where($applyConditions, boolean: $negate ? 'and not' : 'and');
$query->where($applyConditions, boolean: $negate ? 'and not' : 'and');
}

/** @param list<static> $instances */
Expand Down
9 changes: 4 additions & 5 deletions src/Field/BaseRelationField.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
use CraftCms\Cms\View\LegacyAssets\InternalAssetRegistry;
use GraphQL\Type\Definition\InputObjectField;
use GraphQL\Type\Definition\Type;
use Illuminate\Contracts\Database\Query\Builder as BuilderInterface;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
Expand Down Expand Up @@ -146,7 +147,7 @@ public static function dbType(): array|string|null
}

#[Override]
public static function modifyQuery(\Illuminate\Contracts\Database\Query\Builder $query, array $instances, mixed $value): \Illuminate\Contracts\Database\Query\Builder
public static function modifyQuery(BuilderInterface $query, array $instances, mixed $value): void
{
/** @var self $field */
$field = reset($instances);
Expand Down Expand Up @@ -204,19 +205,17 @@ public static function modifyQuery(\Illuminate\Contracts\Database\Query\Builder
if ($query instanceof ElementQuery) {
$filter->apply($query->getQuery(), $relationCriteria, $siteId !== '*' ? $siteId : null);

return $query;
return;
}

if ($query instanceof Builder) {
$filter->apply($query, $relationCriteria);

return $query;
return;
}

$query->where(fn (Builder $query) => $filter->apply($query, $relationCriteria));
}

return $query;
}

/**
Expand Down
8 changes: 1 addition & 7 deletions src/Field/Contracts/FieldInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -168,17 +168,11 @@ public static function dbType(): array|string|null;
/**
* Applies a condition to the query builder for the given field instances, for a user-provided param value.
*
* If `false` is returned, an always-false condition will be used.
*
* @param Builder $query The query instance to modify
* @param static[] $instances The field instances to search
* @param mixed $value The user-supplied param value
*/
public static function modifyQuery(
Builder $query,
array $instances,
mixed $value,
): Builder;
public static function modifyQuery(Builder $query, array $instances, mixed $value): void;

/**
* Returns the orientation the field should use (`ltr` or `rtl`).
Expand Down
4 changes: 2 additions & 2 deletions src/Field/Date.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ public static function dbType(): array
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
$valueSql = self::valueSql($instances);

return $query->whereDateParam($valueSql, $value);
$query->whereDateParam($valueSql, $value);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions src/Field/Field.php
Original file line number Diff line number Diff line change
Expand Up @@ -352,12 +352,12 @@ public static function dbType(): array|string|null
return Query::TYPE_TEXT;
}

public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
$valueSql = static::valueSql($instances);

if ($valueSql === null) {
return $query;
return;
}

$caseInsensitive = false;
Expand All @@ -367,7 +367,7 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
$value = $value['value'];
}

return $query->whereParam(
$query->whereParam(
column: $valueSql,
param: $value,
caseInsensitive: $caseInsensitive,
Expand Down
4 changes: 2 additions & 2 deletions src/Field/Lightswitch.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public static function dbType(): string
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
$valueSql = self::valueSql($instances);
$strict = false;
Expand All @@ -78,7 +78,7 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu

$defaultValue = $strict ? null : $instances[0]->default;

return $query->whereBooleanParam($valueSql, $value, $defaultValue, Query::TYPE_JSON);
$query->whereBooleanParam($valueSql, $value, $defaultValue, Query::TYPE_JSON);
}

/**
Expand Down
8 changes: 5 additions & 3 deletions src/Field/Matrix.php
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ public static function dbType(): array|string|null
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
/** @var self $field */
$field = reset($instances);
Expand All @@ -162,7 +162,9 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
}

if ($value === ':empty:') {
return $query->whereNotExists($exists);
$query->whereNotExists($exists);

return;
}

if ($value !== ':notempty:') {
Expand All @@ -176,7 +178,7 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
$exists->whereIn("entries_$ns.id", $ids);
}

return $query->whereExists($exists);
$query->whereExists($exists);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/Field/Money.php
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,11 @@ public static function dbType(): string
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
$valueSql = self::valueSql($instances);

return $query->whereMoneyParam($valueSql, $instances[0]->currency, $value);
$query->whereMoneyParam($valueSql, $instances[0]->currency, $value);
}

public function getDefaultValue(): float|int|null
Expand Down
4 changes: 2 additions & 2 deletions src/Field/Number.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ public static function dbType(): string
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
$valueSql = self::valueSql($instances);

return $query->whereNumericParam($valueSql, $value, columnType: self::dbType());
$query->whereNumericParam($valueSql, $value, columnType: self::dbType());
}

#[Override]
Expand Down
4 changes: 2 additions & 2 deletions src/Field/Range.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@ public static function dbType(): string
}

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
$valueSql = self::valueSql($instances);

return $query->whereNumericParam($valueSql, $value, columnType: self::dbType());
$query->whereNumericParam($valueSql, $value, columnType: self::dbType());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ class TestActiveQueryField extends PlainText
public static bool $throw = false;

#[Override]
public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
self::$activeQueryDuringModify = ElementQuery::$activeQuery;

if (self::$throw) {
throw new RuntimeException('Active query failure.');
}

return parent::modifyQuery($query, $instances, $value);
parent::modifyQuery($query, $instances, $value);
}

public static function reset(): void
Expand Down
10 changes: 5 additions & 5 deletions yii2-adapter/constants/Field/Concerns/LegacyFieldConstants.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
use CraftCms\Cms\Field\Events\InputOptionsResolving;
use CraftCms\Cms\Field\LinkTypes;
use CraftCms\Cms\Field\LinkTypes\Url;
use Illuminate\Database\Query\Builder;
use Illuminate\Contracts\Database\Query\Builder;
use Illuminate\Support\Facades\Event;
use yii\base\InvalidConfigException;
use yii\validators\Validator;
Expand Down Expand Up @@ -441,18 +441,18 @@ public function validateCustomFieldAttribute(string $attribute, ?array $params =

// Other compatibility methods

public static function modifyQuery(Builder $query, array $instances, mixed $value): Builder
public static function modifyQuery(Builder $query, array $instances, mixed $value): void
{
if (!method_exists(static::class, 'queryCondition')) {
return $query;
return;
}

$params = [];

$condition = static::queryCondition($instances, $value, $params);

if ($condition === null || $condition === false) {
return $query;
return;
}

$db = Craft::$app->getDb();
Expand All @@ -461,7 +461,7 @@ public static function modifyQuery(Builder $query, array $instances, mixed $valu
// Yii uses named parameters, Laravel uses positional
$sql = preg_replace('/:qp\d+/', '?', $sql);

return $query->whereRaw($sql, array_values($params));
$query->whereRaw($sql, array_values($params));
}

public function getElementValidationRules(): array
Expand Down
Loading