这是我的实体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;
答案 0 :(得分:0)
如果“搜索”实体和“用户”实体之间具有关联,则可以这样
null
答案 1 :(得分:0)
此代码不起作用吗?与您的相同,但循环中没有“ getId()”。
foreach ($searches as $s) {
echo '<pre>';
print_r($s->getAccreditationdata());
echo '<br>';
}
die;