Skip to content

Commit 485f0b4

Browse files
committed
fix: wip
2 parents 562c65b + 6904d56 commit 485f0b4

File tree

1 file changed

+10
-17
lines changed

1 file changed

+10
-17
lines changed

src/Filters/SearchableFilter.php

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,16 @@ public function filter(RestifyRequest $request, $query, $value)
4949
} else {
5050
// Use the original subquery approach when JOINs are disabled
5151
collect($this->belongsToField->getSearchables())->each(function (string $attribute) use ($query, $likeOperator, $value) {
52-
$query->orWhere(function ($subQuery) use ($attribute, $likeOperator, $value) {
53-
$relation = $this->belongsToField->getRelation($this->repository);
54-
$relatedModel = $this->belongsToField->getRelatedModel($this->repository);
55-
$relatedTable = $relatedModel->getTable();
56-
$foreignKey = $relation->getForeignKeyName();
57-
$ownerKey = $relation->getOwnerKeyName();
58-
59-
// Build the subquery: (SELECT column FROM related_table WHERE related_table.key = main_table.foreign_key LIMIT 1)
60-
$qualifiedColumn = str_contains($attribute, '.') ? $attribute : $relatedTable . '.' . $attribute;
61-
$localTableForeignKey = $this->repository->model()->getTable() . '.' . $foreignKey;
62-
$relatedTableOwnerKey = $relatedTable . '.' . $ownerKey;
63-
64-
$subQuery->whereRaw(
65-
"(SELECT {$qualifiedColumn} FROM {$relatedTable} WHERE {$relatedTableOwnerKey} = {$localTableForeignKey} LIMIT 1) {$likeOperator} ?",
66-
["%{$value}%"]
67-
);
68-
});
52+
$query->orWhere(
53+
$this->belongsToField->getRelatedModel($this->repository)::select($attribute)
54+
->whereColumn(
55+
$this->belongsToField->getQualifiedKey($this->repository),
56+
$this->belongsToField->getRelatedKey($this->repository)
57+
)
58+
->take(1),
59+
$likeOperator,
60+
"%{$value}%"
61+
);
6962
});
7063
}
7164

0 commit comments

Comments
 (0)