- Fixed some bugs regarding parameter binding

This commit is contained in:
Dave Mc Nicoll 2026-06-15 19:36:09 +00:00
parent 0550036fd9
commit b1adf5a086
4 changed files with 19 additions and 10 deletions

View File

@ -28,7 +28,7 @@ class ApiRepository extends \Ulmus\Repository
public ResponseInterface $lastResponse;
public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, ConnectionAdapter $adapter = null)
public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, null|ConnectionAdapter $adapter = null)
{
parent::__construct($entity, $alias, $adapter);
}

View File

@ -10,7 +10,7 @@ class Filter extends Fragment
public function add($field, mixed $value) : self
{
$this->conditionList[$field] = $value;
$this->conditionList[(string) $field] = $value;
return $this;
}

View File

@ -13,7 +13,7 @@ use Ulmus\{Api\SearchRequest\Attribute\BindParameter,
class ApiSearchRequest extends SearchRequest implements SearchRequestInterface
{
use SearchRequestPaginationTrait, SearchRequestFromRequestTrait {
use /*SearchRequestPaginationTrait,*/ SearchRequestFromRequestTrait {
parseAttributeMethod as parseAttributeMethodParent;
}
@ -26,14 +26,18 @@ class ApiSearchRequest extends SearchRequest implements SearchRequestInterface
], fn($i) => !is_null($i)) + [];
}
protected function parseAttributeMethod(object $attribute, string $field, string $propertyName,): void
protected function parseAttributeMethod(object $attribute, string|\Stringable $field, string $propertyName) : void
{
switch ($attribute->method) {
case SearchMethodEnum::Where:
case SearchMethodEnum::Manual:
if ($attribute instanceof BindParameter) {
$this->bindings[$field] = $this->$propertyName;
if (isset($this->$propertyName)) {
$this->bindings[(string)$field] = $this->$propertyName;
}
return;
}
break;
default:
$this->parseAttributeMethodParent($attribute, $field, $propertyName);

View File

@ -2,15 +2,20 @@
namespace Ulmus\Api\SearchRequest\Attribute;
use Ulmus\SearchRequest\{ SearchMethodEnum, Attribute\SearchParameter };
use Ulmus\SearchRequest\{Attribute\PropertyValueSource,
Attribute\SearchManual,
SearchMethodEnum,
Attribute\SearchParameter};
#[\Attribute(\Attribute::TARGET_PROPERTY)]
class BindParameter extends SearchParameter
class BindParameter extends SearchManual
{
public function __construct(
public ? string $parameter = null,
public ? string $field = null,
public null|string|array $parameter = null,
public null|string|\Stringable|array $field = null,
public bool $toggle = false,
public SearchMethodEnum $method = SearchMethodEnum::Manual,
public string $description = "",
public PropertyValueSource|array $source = PropertyValueSource::RequestAttribute,
) {}
}