Php 条令实体循环通过另一实体
我目前有一个与PropertyRates有关系的Property实体。我需要了解最新的一个PropertyRate已经更新。目前,我在属性实体中有一个函数来循环关联的PropertyRate并返回最新的PropertyRate->dateModified。这会很快在数千个属性中循环,耗尽内存Php 条令实体循环通过另一实体,php,doctrine-orm,Php,Doctrine Orm,我目前有一个与PropertyRates有关系的Property实体。我需要了解最新的一个PropertyRate已经更新。目前,我在属性实体中有一个函数来循环关联的PropertyRate并返回最新的PropertyRate->dateModified。这会很快在数千个属性中循环,耗尽内存 public function getRatesDateModified() { $retval = new \DateTime("2000-01-01T06:00:00Z"); forea
public function getRatesDateModified()
{
$retval = new \DateTime("2000-01-01T06:00:00Z");
foreach($this->propertyRates as $rate) {
if($retval < $rate->getDateModified()) {
$retval = $rate->getDateModified();
}
}
return $retval;
}
公共函数getRatesDataModified()
{
$retval=new\DateTime(“2000-01-01T06:00:00Z”);
foreach($this->propertyRates为$rate){
如果($retval<$rate->getDateModified()){
$retval=$rate->getDateModified();
}
}
返回$retval;
}
这就是这个函数应该放的地方吗?将其放在存储库中似乎是不对的,因为它是特定于单个实体的,但没有访问EntityManager的权限,因此我可以分离内存不足的属性。如果您使用的是条令,我建议使用。也许是这样的
<?php
use Doctrine\Common\Collections\Criteria;
$entity = $entityManager->find('Entity', $id);
$propertyRates = $entity->getPropertyRates();
$criteria = Criteria::create()
->where(Criteria::expr()->orderBy(["dateModified"]))
->setFirstResult(0)
->setMaxResults(20);
$result = $userCollection->matching($criteria)[0];
美元组来自哪里?还有,这个代码会放在哪里?我当前调用getRatesDataModified()的地方?这是一个复制粘贴示例,其中包含文档中的修改。$entity应该是包含PropertyRates集合的实体。我建议将此代码放在存储库中。我会接受你的答案,因为这是正确的方法,但它不像条令的每一部分那样对我有效,它会抛出一些无用的错误。我将在Repo中使用DQL查询。