php - 如何使用查询生成器在学说 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
)
)
解决方案
尝试以下方式:
->select('articles.id','articles.name','articles.text','articles.categoryId','articles.categories','category.id', 'category.name')
代替
->select('articles, category')