Php Symfony/条令:按子属性筛选查询
我试图执行一个查询,以从特定的Php Symfony/条令:按子属性筛选查询,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我试图执行一个查询,以从特定的组织获取所有回购,但它返回一个空结果。。。(数据库中有数据!) 回购与组织是一种多对多关系 以下是Repos实体: /** * Repos * * @ORM\Table(name="repos") * @ORM\Entity(repositoryClass="AppBundle\Repository\ReposRepository") */ class Repos { ... /** * * @Many
组织
获取所有回购
,但它返回一个空结果。。。(数据库中有数据!)
回购与组织是一种多对多关系
以下是Repos
实体:
/**
* Repos
*
* @ORM\Table(name="repos")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ReposRepository")
*/
class Repos
{
...
/**
*
* @ManyToMany(targetEntity="Organization", inversedBy="repos")
*
*/
protected $orgs;
...
/**
* Organization
*
* @ORM\Table(name="organization")
* @ORM\Entity(repositoryClass="AppBundle\Repository
* \organizationRepository")
*/
class Organization
{
...
/**
*
* @ORM\ManyToMany(targetEntity="Repos", mappedBy="orgs")
*
*/
protected $repos;
...
}
以下是组织
实体:
/**
* Repos
*
* @ORM\Table(name="repos")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ReposRepository")
*/
class Repos
{
...
/**
*
* @ManyToMany(targetEntity="Organization", inversedBy="repos")
*
*/
protected $orgs;
...
/**
* Organization
*
* @ORM\Table(name="organization")
* @ORM\Entity(repositoryClass="AppBundle\Repository
* \organizationRepository")
*/
class Organization
{
...
/**
*
* @ORM\ManyToMany(targetEntity="Repos", mappedBy="orgs")
*
*/
protected $repos;
...
}
下面是带有QueryBuilder
的存储库
:
/**
* ReposRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class ReposRepository extends \Doctrine\ORM\EntityRepository
{
public function findReposByName($name){
$qb = $this->createQueryBuilder('r');
// Build query
$qb->select('r')
->andWhere(
':searchName MEMBER OF r.orgs'
);
$qb->setParameter('searchName',$name);
return $qb->getQuery()->getResult();
}
}
$name
是一个组织的名称,我希望获得具有相同组织名称的所有回购协议。如果要使用组织的name
属性进行筛选,必须执行加入查询
使用查询生成器
在DQL中
公共函数findReposByName($name){
$dql=setParameter('searchName',$name)
->getResult();
}
如果要使用组织的name
属性进行筛选,则必须执行加入查询
使用查询生成器
在DQL中
公共函数findReposByName($name){
$dql=setParameter('searchName',$name)
->getResult();
}
WOWW,它可以工作!!几天前我看到了这个解决方案,但我使用了与CreateQueryBuilder相同的联接别名!这就是它不起作用的原因!非常感谢。哇,真管用!!几天前我看到了这个解决方案,但我使用了与CreateQueryBuilder相同的联接别名!这就是它不起作用的原因!非常感谢。