【发布时间】:2019-03-13 10:51:20
【问题描述】:
这是我的实体 Feed 的自定义存储库函数的内容。
SearchController.php
$searches=$this->getDoctrine()-getRepository('UserBundle: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;
我得到以下用户 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;
【问题讨论】:
-
在您的工作示例中调用
print_r($s->getId());的不是print_r($s->getAccreditationdata());?
标签: php symfony many-to-many