Symfony Doctrine - 使用外键字段从相关表中检索记录

时间:2017-08-30 13:13:21

标签: php mysql symfony doctrine-orm

我有两张相关的表格。其中一个表与第二个表有一对多的关系。这是两个表的示例说明

**

registration
id | firstname | membershipfk
1  | John      | 2
2  | Foo       | 3

**

以下是第二张表的插图

membership
id | type   | discount   | description     
1  | Gold   | xyz        | xyz description
2  | Silver | xyz        | xyz description

现在我的挑战是使用注册表中的外键从成员资格表中检索成员资格字段。 例如:Select Type, Discount and Description from Membership Entity where fk in registration entity is equal to 2

目前在我的控制器中我正在进行此尝试

public function getMembersAction()
        {
          $restresults = $this->getDoctrine()->getRepository('XXXBundle:Members')->findAll();

          $data = array();
            foreach ($restresults as $restresult) {

                array_push($data, $this->serializeData($restresult));

            }

非常感谢各种帮助

2 个答案:

答案 0 :(得分:0)

如果你的实体设置得好,你需要调用一个findBy。

试试这个:

$results = $this->getDoctrine()->getRepository('XXXBundle:Members')->findByMember($memberId);

但你需要先配置好你的实体

答案 1 :(得分:0)

尝试使用以下代码

$em->getRepository('XXXBundle:Members')
    ->createQueryBuilder('m')
    ->select("m.type, m.discount, m.description")
    ->innerJoin("XXXBundle:Registration","r","WITH","m.id = r.membershipfk") //Here you will Join with the Registration Bundle
->where("m.id = 2")
    ->getQuery()
    ->getResults();