确保您的API Platform版本高于2.5.0,并且在entity中使用了@Property(array = true)注释。
为API Platform添加自定义的过滤器,以便在关系列上正确执行搜索。例如,您可以使用以下代码示例中的自定义Filter类:
// src/Filter/RelatedSearchFilter.php
getProperties($resourceClass);
$attributeName = array_search($association, $associations);
if (!$attributeName || !isset($associations[$attributeName]['search'])) {
return;
}
// Specify an alias to prevent collisions in the search query.
$alias = 'o_' . str_replace('.', '_', $association);
// Create the join query.
$rootAlias = $queryBuilder->getRootAliases()[0];
$queryBuilder->leftJoin(sprintf('%s.%s', $rootAlias, $association), $alias);
// Filter the query based on the searchable property.
$property = sprintf('%s.%s', $alias, $assocProperty);
$this->addWhere($queryBuilder, $property, $value, $alias, $associations[$attributeName]);
}
public function getDescription(string $resourceClass): array
{
$description = [];
$properties = $this->getProperties($resourceClass);
foreach ($properties as $property => $info) {
if (!$info || !isset($info['search'])) {