gpt4 book ai didi

php - 原则 2 - 如何在没有特定文章的情况下获取类别

转载 作者:行者123 更新时间:2023-11-30 22:35:44 27 4
gpt4 key购买 nike

我正在学习 Doctrine。我在多对多关系中有两个实体 Article 和 Category,我正在尝试获取所有不是特定文章的类别。

文章实体:

class Article extends BaseEntity
{

use Identifier;

/**
* @ORM\Column(type="string", nullable = false, unique=TRUE)
* @var string
*/
private $title;

/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="articles")
* @ORM\JoinTable(name="article_categories")
*/
private $categories;

public function getCategories()
{
return $this->categories;
}


public function __construct()
{
$this->categories = new \Doctrine\Common\Collections\ArrayCollection();
}

和类别实体:

    class Category extends BaseEntity
{

use Identifier;

/**
* @ORM\Column(type="string", nullable = false, unique=true)
* @var string
*/
private $title;


/**
* @ORM\Column(type="string",nullable=false,unique=true)
* @var sting
*/
private $slug;

/**
* @ORM\ManyToMany(targetEntity="Article", mappedBy="categories")
*/
private $articles;



public function __construct()
{
$this->articles = new \Doctrine\Common\Collections\ArrayCollection();
}

我正在尝试获取没有特定文章的所有类别。在纯 MySQL 中,id 是这样的:

SELECT * FROM category LEFT JOIN article_categories ON category.id = article_categories.category_id WHERE article_categories.article_id <> 1(for example) AND article_id IS NOT NULL

我可以在我的 CategoryRepository 中创建的唯一解决方案就是这个。

public function findWithoutArticle($article_id)
{
$articleCat = $this->em->find(Article::getClassName(), $article_id);
$qb = $this->em->createQueryBuilder();
$qb->select('c')
->from(Category::getClassName(), 'c')
->where('c.id NOT IN (:article_id)')
->setParameter('article_id', $articleCat->getCategories()->toArray());
return $qb->getQuery()->getResult();
}

这看起来不对。有没有更好的“Doctrine way”实践?

最佳答案

这个怎么样?

$qb = $this->em->createQueryBuilder();
$qb->select('c');
$qb->from('Category', 'c');
$qb->leftJoin('c.articles', 'a');
$qb->where($qb->expr()->neq('a.article_id', '?1'));
$qb->setParameter(1, $article_id);
$categories = $qb->getQuery()->getResult();

关于php - 原则 2 - 如何在没有特定文章的情况下获取类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32594157/

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