我有两个实体:
class Products
{
/**
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
*/
private $id;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=true)
*/
private $name;
/**
* @var CatalogSections|null $catalogSection
* @ORM\ManyToOne(targetEntity="App\Entity\CatalogSections")
* @ORM\JoinColumn(name="catalog_section", referencedColumnName="id")
*/
private $catalogSection;
...
}
和目录部分
class CatalogSections
{
/**
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\Column(name="name", type="string", length=250, nullable=true)
*/
private $name;
...
}
我想通过“ Doctrine查询生成器”获取产品的catalog_section ID。有没有办法不加入就可以得到它?即我想获取存储在产品表中的catalog_section列值
$qb = $this->createQueryBuilder('products');
$qb->select('products.id', 'products.name',
'products.catalogSection' // catalog_section
);
答案 0 :(得分:1)
选择没有Join的ID的唯一有效理由是提高性能。
当涉及到性能时,最好直接使用DBAL Connection而不是查询生成器。
$this->entityManager->getConnection()->executeQuery('SELECT id, name, catalog_section FROM products')