Php Symfony使用语句(where子句)获取映射实体
我有一个理解的问题 我有两个映射实体Php Symfony使用语句(where子句)获取映射实体,php,symfony,doctrine,Php,Symfony,Doctrine,我有一个理解的问题 我有两个映射实体 class news { public function __construct() { $this->newsgroups = new ArrayCollection(); } /** * @ORM\ManyToMany(targetEntity="Unite\NewsBundle\Entity\newsgroup", inversedBy="news") * @OR
class news
{
public function __construct()
{
$this->newsgroups = new ArrayCollection();
}
/**
* @ORM\ManyToMany(targetEntity="Unite\NewsBundle\Entity\newsgroup", inversedBy="news")
* @ORM\JoinTable(name="news_to_newsgroup")
**/
protected $newsgroups;
....
}
及
我的问题:
在新闻组='x'的情况下,如何获取所有在日期x和y之间处于活动状态的新闻
当我使用我的新闻组对象(函数getNews())时
是否真的有必要用foreach查看每一条新闻,并检查我的情况是否属实
非常感谢我的朋友们对你的帮助:)我建议你根据自己的情况得到消息。查询将是这样的smth
$query = $repository->createQueryBuilder('n')
->innerJoin('n.newsgoup', 'ng')
->where('ng.id > :newsGroupId')
->where('ng.undate BETWEEN :monday AND :sunday')
->setParameter('newsGroupId', '1')
->setParameter('monday', '2016-01-02')
->setParameter('sunday', '2016-02-17')
->getQuery();
$news = $query->getResult();
我建议你根据自己的情况得到消息。查询将是这样的smth
$query = $repository->createQueryBuilder('n')
->innerJoin('n.newsgoup', 'ng')
->where('ng.id > :newsGroupId')
->where('ng.undate BETWEEN :monday AND :sunday')
->setParameter('newsGroupId', '1')
->setParameter('monday', '2016-01-02')
->setParameter('sunday', '2016-02-17')
->getQuery();
$news = $query->getResult();
您可以使用类来筛选集合
您可以在实体中创建一个额外的方法:
public function getFilteredNews()
{
$criteria = Criteria::create()
->where('isActive', true)
->andWhere(Criteria::expr()->between(
'createdAt',
'2016-02-20',
'2016-02-25'
));
return $this->getNews()->matching($criteria);
}
或者,您可以使用ArrayCollection
中的方法,或者为您的实体创建一个存储库,并使用(Anna建议的)获取数据。您可以使用类筛选集合
您可以在实体中创建一个额外的方法:
public function getFilteredNews()
{
$criteria = Criteria::create()
->where('isActive', true)
->andWhere(Criteria::expr()->between(
'createdAt',
'2016-02-20',
'2016-02-25'
));
return $this->getNews()->matching($criteria);
}
或者,您可以使用
ArrayCollection
中的方法,或者为您的实体创建一个存储库,并使用(Anna建议的)获取数据。谢谢您的回答,我正在考虑这种方法。我认为有另一种方法是从许多映射理论中得出的。因此,它就像普通的msqli命令一样,带有条令。非常感谢:)成功了:D-innerJoin自动映射到新闻组,因为有很多映射。完美的谢谢你的回答,我在想这个问题。我认为有另一种方法是从许多映射理论中得出的。因此,它就像普通的msqli命令一样,带有条令。非常感谢:)成功了:D-innerJoin自动映射到新闻组,因为有很多映射。完美的谢谢好吧,我想这就是我一直在寻找的方式。我试试你的解决办法。你认为什么是可持续的、特别是强大的开发的更好的方法?是的,请下次详细说明,比如你正在使用的版本等:)我会推荐QueryBuilder自定义查询,但仍然取决于用例。好吧,我想这就是我一直在寻找的方法。我试试你的解决办法。你认为什么是可持续的、特别是强大的开发的更好的方式?是的,请下次详细说明,比如你正在使用的版本等:)我会推荐QueryBuilder自定义查询,但仍然取决于用例。