【问题标题】:Fetch data from 2 tables without relationship in doctrine从 2 个没有学说关系的表中获取数据
【发布时间】:2013-12-26 10:01:04
【问题描述】:

我是 Symfony2 的新手。它建议使用学说,所以我正在学习它。

现在我正在测试从 2 个表中获取数据。假设表名是tb_info & tb_group。我有 2 个具有相同名称的类,它们具有代表这 2 个表的正确 ORM。

在简单的查询中,我们这样做

"SELECT * FROM tb_info,tb_group"

所有神奇的数据都到了我的手中。现在有了 Doctrine,我找不到像这样简单的方法。我试过了

$query = $em->createQuery(
    'SELECT p
    FROM AcmeDbBundle:tb_info,AcmeDbBundle:tb_group p'
);

这不起作用。我看到了一些从 2 个不同的表中收集数据的方法。 但我不想使用关系。

是否有任何简单的方法可以在学说中编写查询以从多个表中获取数据?我错过了什么吗?

【问题讨论】:

  • 你为什么要这样做?这似乎不合逻辑。表有不同的结构和不同的信息。为什么不只运行两个查询?
  • @Touki 你不需要为那个兄弟操心。有成千上万种情况我需要它。假设在 tb_info 中有一个学生的 id、name、roll 并且在 tb_group 中有 id 和 bloodGroup。我需要该学生的总数据和 1 个查询。现在我想要使用教义。
  • 好吧,如果你不介意的话,你可以直接使用$em->getConnection()->query($nativeSQL);来运行原生查询。
  • @Touki 成功了。非常感谢。

标签: mysql database symfony doctrine-orm doctrine


【解决方案1】:

您可以在存储库函数中使用 Doctrine QueryBuilder:

    $queryBuilder = $this->_em->createQueryBuilder();       
    $queryBuilder->addSelect("position,candidate")
        ->from("RadsphereRecruitmentBundle:Position", 'position')
        ->from("RadsphereRecruitmentBundle:Candidate", 'candidate')
        ->andWhere("position.open = :open")
        ->setParameter("open",true);

    return $queryBuilder->getQuery()->getResult();

【讨论】:

  • QueryBuilder 中不止一个,谁会想到这么简单?
  • @Aaron 不是我,我只是在寻找一个解决方案,它非常简单......双重'来自'FTW!
猜你喜欢
  • 2012-05-04
  • 1970-01-01
  • 2013-04-20
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多