致命错误:在symfony中的数组上调用成员函数getId()

时间:2019-03-13 10:51:21

标签: php symfony many-to-many

这是我的实体Feed的自定义存储库功能的内容。

SearchController.php

$searches=$this->getDoctrine()-getRepository('CocoricoUserBundle:User')->findPersonType(1);

存储库功能:

public function findPersonType($usertype)
    {
        $queryBuilder = $this->createQueryBuilder('u')
            ->addSelect("u")
            ->where('u.personType = :personType')
            ->setParameter('personType', $usertype);
        try {
            $query = $queryBuilder->getQuery();
            return $query->getResult();
        } catch (NonUniqueResultException $e) {
            return null;
        }
    }

当我尝试在mycontroller中使用循环

foreach ($searches->getId() as $s) {

     echo '<pre>';
     print_r($s->getAccreditationdata());
     echo '<br>';

}
die;

我有一个错误:

  

致命错误:在数组上调用成员函数getId()

如果我喜欢这种方式,则可以正常工作:

foreach ($searches as $s) {

    echo '<pre>';
    print_r($s->getId());
    echo '<br>';
}
die;

我得到了以下user_id:12345、1234567、234567

现在,对于这些用户ID,我想进一步查找那里的认证和部门,两者在用户实体中都具有多对多的关系。因此,如何在搜索页面上的列表中获取所有这些用户的多个“部门”和“认证”数据?

编辑:

下面是部门和认证的用户实体关系。

/**
     * @ORM\ManyToMany(targetEntity="UserBundle\Entity\Sectors", inversedBy="user", cascade={"persist"})
     * @ORM\JoinTable(
     *      joinColumns={@ORM\JoinColumn(onDelete="CASCADE")},
     *      inverseJoinColumns={@ORM\JoinColumn(onDelete="CASCADE")}
     * )
     */
    public $sectors;

    /**
     * @ORM\ManyToMany(targetEntity="UserBundle\Entity\Accreditations", inversedBy="user" , cascade={"persist"})
     * @ORM\JoinTable(
     *      joinColumns={@ORM\JoinColumn(onDelete="CASCADE")},
     *      inverseJoinColumns={@ORM\JoinColumn(onDelete="CASCADE")}
     * )
     */
    public $accreditationdata;

2 个答案:

答案 0 :(得分:0)

如果“搜索”实体和“用户”实体之间具有关联,则可以这样

null

答案 1 :(得分:0)

此代码不起作用吗?与您的相同,但循环中没有“ getId()”。

foreach ($searches as $s) {

     echo '<pre>';
     print_r($s->getAccreditationdata());
     echo '<br>';

}
die;