Я написал построитель запросов для доктрины, чтобы возвращать все транзакции по одной карте. Итак, я вызываю переменную $card в другой функции, и она выдает:
Warning: Declaration of Service\SomeService::showFields(ShowMapper $showMapper, $card) should be compatible with Admin\AbstractAdmin::configureShowFields(ShowMapper $show)
Поскольку я не могу изменить синтаксис этой службы администрирования или добавить новые экземпляры, мне нужен выход.
Это основная функция
protected function configureShowFields(ShowMapper $showMapper, $card->this throws an error, it can't be set here)
{
$transactions = $this->getTransactions($card);
...etc
и мой запрос доктрины:
public function getTransactions(Card $card)
{
return $this->getTransactionRepository()
->createQueryBuilder('t')
->where('t.card = :card')
->setParameter('card', $card)
->orderBy(''desc')
->getQuery()
->getResult();
}
Я старался:
public $cards;
public function __construct(Card $cards)
{
parent::__construct();
$this->cards = $cards;
}
$cards = $this->cards;
$transactions = $this->getTransactions($cards);
но это бросает
Binding entities to query parameters only allowed for entities that have an identifier.






Возможно, вы могли бы сделать
$cardпеременную в своемSomeServiceклассе и использовать геттер/сеттер. Таким образом, вы можете сначала установить карту в классе, а затем в своей функции вы можете использовать геттер для получения информации о карте, не передавая ее в качестве аргумента.