php - createQueryBuilder/加入列 - Symfony

标签 php mysql left-join symfony

我在执行这个 SQL 请求时遇到了麻烦:

SELECT *
FROM project
LEFT JOIN user 
ON project.idAuthor=user.id 
WHERE project.isVisible = 1 AND
user.role = 'agency'

到一个简单的 Symfony 查询生成器:

 $query = $this->createQueryBuilder('p')
            ->leftJoin('WebAwardsBundle:User', 'u')
            ->where('p.isVisible = 1')
            ->andwhere("u.role = 'agency'")
            ->orderBy('p.id', 'DESC')
            ->getQuery();

此查询的响应为我提供了所有项目,包括角色时的项目!== agency ...

我不知道我可以把 ON project.idAuthor=user.id 放在哪里

映射:

项目:

    /**
 * Project
 *
 * @ORM\Table(name="project")
 *@ORM\Entity(repositoryClass="WebAwardsBundle\Repostory\ProjectRepository")
 */
class Project
{
    ...
/**
 * @var int
 *
 * @ORM\ManyToOne(targetEntity="User", inversedBy="projects")
 * @ORM\JoinColumn(name="idAuthor", referencedColumnName="id")
 */
private $idAuthor;

...

用户:

/**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity(repositoryClass="WebAwardsBundle\Repository\UserRepository")
 */
class User implements UserInterface, \Serializable{

...

 /**
     * @ORM\OneToMany(targetEntity="Project", mappedBy="idAuthor")
     */
    private $projects;
...

最佳答案

执行此 SQL 请求的正确答案:

SELECT *
FROM project
LEFT JOIN user 
ON project.idAuthor=user.id 
WHERE project.isVisible = 1 AND
user.role = 'agency'

是加入实体的正确列(在本例中为用户的 project.idAuthor):

$query = $this->createQueryBuilder('p')
        ->join('p.idAuthor', 'u')
        ->where('p.isVisible = 1')
        ->andWhere("u.role = 'agency'")
        ->orderBy('p.id', 'DESC')
        ->getQuery();

关于php - createQueryBuilder/加入列 - Symfony,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351808/

相关文章:

Java - MySql 存储过程 "No data - zero rows fetched, selected, or processed"

MYSQL 连接没有按预期工作

php - Google App Engine 提供 Content-Length header

MySql DB 查询优化器和 like 关键字

php - vtiger与mysql连接时出现意外错误

mysql - 如何在 Pandas 数据框连接中将表 A 中的 A 列乘以表 B 中的 B 列?

MySQL Left Join(我认为)困难

android - 我可以使用 ContentResolver.query() 执行这个 Android 查询吗? (左连接和大小写)

php - APC序列化慢?

php - 如何从 Drupal 站点访问单独的 MS SQL 数据库中的数据?