首页 > 解决方案 > 如何使用查询生成器在学说 2 中注入连接对象

问题描述

我有文章和类别实体。那些与映射无关的实体,但我需要使用查询构建器将类别加入文章,因此我需要在类别实体中注入的文章实体。我怎么能这样做?

我搜索了谷歌,但没有找到解决方案

class ArticleRepository extends ServiceEntityRepository
{
    public function __construct(RegistryInterface $registry)
    {
        parent::__construct($registry, Article::class);
    }

    public function getAll()
    {
        $query = $this->createQueryBuilder('articles')
            ->select('articles, category')
            ->join(\App\Entity\Category::class, 'category', 'WITH', 'articles.categoryId = category.id')
            ->getQuery();

        echo '<pre>';
        print_r($query->getResult());
        exit;
    }
?>

// output

Array
(
    [0] => App\Entity\Article Object
        (
            [id:App\Entity\Article:private] => 1
            [name:App\Entity\Article:private] => title1
            [text:App\Entity\Article:private] => text1
            [categoryId:App\Entity\Article:private] => 1
            [categories:App\Entity\Article:private] => 
        )

    [1] => App\Entity\Category Object
        (
            [id:App\Entity\Category:private] => 1
            [name:App\Entity\Category:private] => first cat
        )

    [2] => App\Entity\Article Object
        (
            [id:App\Entity\Article:private] => 2
            [name:App\Entity\Article:private] => title2
            [text:App\Entity\Article:private] => text2
            [categoryId:App\Entity\Article:private] => 1
            [categories:App\Entity\Article:private] => 
        )

    [3] => App\Entity\Article Object
        (
            [id:App\Entity\Article:private] => 3
            [name:App\Entity\Article:private] => title3
            [text:App\Entity\Article:private] => text3
            [categoryId:App\Entity\Article:private] => 2
            [categories:App\Entity\Article:private] => 
        )

    [4] => App\Entity\Category Object
        (
            [id:App\Entity\Category:private] => 2
            [name:App\Entity\Category:private] => second cat
        )

)

标签: phpsymfonydoctrine-ormdoctrinequery-builder

解决方案


尝试以下方式:

 ->select('articles.id','articles.name','articles.text','articles.categoryId','articles.categories','category.id', 'category.name')

代替

->select('articles, category')

推荐阅读