小编dev*_*ops的帖子

注入问题 - 缺少父构造函数调用

我试图将我的 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)

php oop dependency-injection symfony symfony-3.4

3
推荐指数
1
解决办法
2万
查看次数

无效参数:查询中未定义令牌帐户

我定义了两个查询构建器。

第一:返回用户的所有帐户。

秒数:按帐户返回所有用户交易。

第一的:

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)

第一个工作完美,但第二个抛出错误:

无效参数:查询中未定义令牌帐户

如何修复它?

php query-builder symfony doctrine-orm symfony-3.4

-3
推荐指数
1
解决办法
4415
查看次数