我试图将我的 BaseService 注入到另一个服务中,我需要调用我在 BaseService 中编写的存储库。
我认为这很简单,但它用以下标记 __construct 部分:
缺少父构造函数调用
我在 BaseService 中创建了该逻辑并且它有效
class BaseService
{
/** @var ContainerInterface */
public $container;
public $em;
public function __construct(ContainerInterface $container, EntityManagerInterface $em)
{
$this->container = $container;
$this->em = $em;
}
/**
* @return \Doctrine\Common\Persistence\ObjectRepository|\Doctrine\ORM\EntityRepository
*/
public function getMyDataRepository()
{
return $this->em->getRepository(MyData::class);
}
}
Run Code Online (Sandbox Code Playgroud)
和我的其他服务:
class DataService extends AbstractAdmin
{
public function __construct(BaseService $baseService)
{
$this->baseService = $baseService;
}
public function getTransactions(Card $card)
{
return $this->getMyDataRepository()
->createQueryBuilder('c')
->getQuery();
}
}
Run Code Online (Sandbox Code Playgroud) 我定义了两个查询构建器。
第一:返回用户的所有帐户。
秒数:按帐户返回所有用户交易。
第一的:
public function getAccountsList($user)
{
return $this->getAccountRepository()
->createQueryBuilder('a')
->select('a')
->where('a.user = :user')
->setParameter('user', $user)
->getQuery()
->getResult();
}
Run Code Online (Sandbox Code Playgroud)
第二:
public function getTransactionsList($user)
{
$accounts = $this->getAccountsList($user);
$query = $this->getTransactionRepository()
->createQueryBuilder('t')
->select('t')
->where('t.account IN (:accounts)')
->setParameter('account', $accounts)
->getQuery()
->getResult();
return $query;
}
Run Code Online (Sandbox Code Playgroud)
第一个工作完美,但第二个抛出错误:
无效参数:查询中未定义令牌帐户
如何修复它?