我有实体Devekoper,我需要找到具有密码并具有newreference的开发人员,但我不知道该怎么做:

    /**
    * Developers.
    *
    * @ORM\Table(name="developers")
    * @ORM\Entity(repositoryClass="Artel\ProfileBundle\Entity\DeveloperRepository")
    */
    class Developer extends CustomUser
    {
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
     protected $id;

         /**
 * @var string
 *
 * @ORM\Column(name="password", type="string", length=80, nullable=true)
 */
protected $password;


/**
 * @ORM\ManyToMany(targetEntity="Artel\ProfileBundle\Entity\CodeUserReference", inversedBy="alluser")
 */
protected $newreference;


我在用户的字段codereference setreference中有实体CodeUserReference

 class CodeUserReference
 {
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\ManyToOne(targetEntity="Artel\ProfileBundle\Entity\Developer", inversedBy="newreference")
 */
protected $alluser;

/**
 * @ORM\Column(type="string", length=255)
 */
protected $codereference;

/**
 * @Gedmo\Timestampable(on="create")
 * @ORM\Column(type="datetime")
 */
protected $created_at;


我想找到所有引用谁没有引用的开发人员。我尝试:

    public function getDevelopersWithRefernce()
{
    $qb = $this->getEntityManager()->createQueryBuilder('d');

    $qb
        ->select('d')
        ->from('ArtelProfileBundle:Developer', 'd')

        ->addSelect('COUNT(m.id) as nMethods')
        ->join('d.newreference', 'm')
        ->groupBy('d.id')
        ->orderBy("nMethods", 'DESC')

        ->getQuery();
    $query = $qb->getQuery();
    $results = $query->getResult();

    return $results;
}


我有错误SQLSTATE [42S02]:找不到基本表或视图:1146表'artel.developer_codeuserreference'不存在。我需要找到有参考或没有参考的开发人员。帮助

最佳答案

就是说您CodeUserReference表不存在

所以

->join(d.newreference, 'm')


不上班。

您能告诉我们CodeUserReference类的标题吗?

您是否已完成将表添加到数据库的迁移?

检查此命令是否创建具有以下区别的文件:doctrine:migrations:diff

public function getDevelopersWithRefernce()
{
    $qb = $this->getEntityManager()->createQueryBuilder('d');

    $qb
        ->select('d')
        ->from('ArtelProfileBundle:Developer', 'd')
        ->leftJoin('d.newreference', 'm')
        ->where('m.codereference IS NULL')
        ->andWhere('d.password IS NULL')

        ->getQuery();
    $query = $qb->getQuery();
    $results = $query->getResult();

    return $results;
}

关于php - 创建QueryBuilder以查找字段ManuToMany,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31399968/

10-11 08:33