О вашей ошибке
PHP Fatal error: Uncaught TypeError: Argument 1 passed to OpenEMR\Repositories\ArSessionRepository::getInsurerPaid() must be an instance of OpenEMR\Entities\ArSession, integer given, called in C:\oerm_dev\www\dev\mindfulemr4\library\financialreports\src\FinancialSummaryByInsuranceController.php on line 72 and defined in C:\oerm_dev\www\dev\mindfulemr4\repositories\ArSessionRepository.php:26
Эта ошибка происходит потому, что ваша функция getInsurerPaid()
ожидает объект ArSession
, но когда вы вызываете его в своей функции getpaidata()
, выпередают ему целое число.
Вместо этого вы должны отредактировать вашу getInsurerPaid()
функцию для принятия целочисленного параметра.
Метод getInsurerPaid()
должен вернуть ArSession
объект из идентификатора, поэтому вам не нужно запрашивать ArSession
объект.
О вашем методе хранилища
Если вы хотитечтобы извлечь одну строку из вашего хранилища, вы должны использовать метод findOneBy()
, так как он вернет ваш объект, если он найден, или иначе null
.
Метод findBy()
полезен, если вы хотитеизвлекает несколько строк и возвращает array
объектов.
Обновленный метод хранилища
public function getInsurerPaid(int $payer_id)
{
return $this->_em->getRepository($this->_entityName)->findOneBy([
"payer_id" => $payer_id
]);
}
Некоторые пояснения по поводуСущности и хранилища
Я не понимаю взаимосвязи междувызов метода ArSessionRepository :: getInsurerPaid () и ArSession, где все сущности перечислены с помощью методов получения и установки.
Entities представляет ваши модели, эти классы невзаимодействовать напрямую с вашей базой данных.
Репозитории - это классы, взаимодействующие с вашей базой данных. Они отвечают за выполнение операций чтения / записи в вашей базе данных.
Все ваши репозитории сущностей наследуются от класса Doctrine\ORM\EntityRepository
и предоставляют вам несколько методов для взаимодействия с вашей БД (например, findBy()
), чтобы вы моглине нужно переписывать его каждый раз, когда вы создаете сущность.