gpt4 book ai didi

php - 创建 QueryBuilder 以查找字段 ManuToMany

转载 作者:行者123 更新时间:2023-11-29 12:06:27 27 4
gpt4 key购买 nike

我有实体 Devekoper,我需要找到有密码和新引用的开发人员,我现在不知道该怎么做:

    /**
* 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]: 未找到基表或 View : 1146 表 'artel.developer_codeuserreference' 不存在 。我需要找到有引用或没有引用的开发人员。帮助

最佳答案

这表明您 CodeUserReference 的表不存在

所以

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

不会起作用。

您能给我们看看 CodeUserReference 类的 header 吗?

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

检查此命令是否创建一个具有差异的文件: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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com