原则:如何通过属性从标准协会订购

问题描述 投票:3回答:1

我无法从另一个实体命令由属性记录。

我有类员工,其中有属性$用户,它指向类用户,其具有属性$活跃。

现在我想排序user.active员工,我不能够做到这一点。这就是我所说的EM:

/**
* @param Criteria $criteria
* @param array $order_by
* @param integer $limit
* @param integer $offset
* @return \Doctrine\Common\Collections\Collection
*/
public function findByCriteria($criteria, $order_by = null, $limit = null, $offset = null) {
  $criteria->setFirstResult($offset);
  $criteria->setMaxResults($limit);
  $criteria->orderBy($order_by);

  $result = $this->repository->matching($criteria);

  return $result;
}

我检查BaseEntityPersister.php而且好像也没有这样的事情实现。它只是检查是否user.active是Employee类的属性,并抛出

Doctrine\ORM\ORMException

Unrecognized field: user.active

我知道我能做到这一点通过的QueryBuilder和加入,但我想让我的代码的可重用性和标准似乎是一个不错的选择。

谢谢您的建议!

编辑:

如果我使用findBy,有一个与排序字段user.active没有问题。我应该考虑这种匹配方法的限制?这是可悲的,因为我需要使用Doctrine \ COMMON \收藏\标准。我可以使用findBy与顺序,然后用匹配的方法来筛选记录,但我宁愿做在数据库方面。

编辑2:

我用•奈特与Kdyby /学说。不知道user.active在Kdyby /学说直接实施,而不是在教义。所以我想这个问题将不会被回答..

php orm doctrine nette
1个回答
1
投票

如果你看一下Kdyby /学说,是通过自动检测关系和执行,如果需要的甘蔗看到here by calling autoJoinOrderBy加入扩展了findBy能力。这就是为什么标准不支持加入的原因,并Kdyby的findBy一样。

如果你想重复使用的方式来构建主义查询,该标准不帮你,但是有QueryObject,它执行类似的工作,并可以重复使用逻辑查询部分,但使用的QueryBuilder。它不是那么有据可查的,但这里有一些资源:

Official documentation of QueryObject

Blog post with example usage

Kdyby/Doctrine autor's presentation on Doctrine and QueryObject(从滑动件43)

Some more official information about QueryObjects

© www.soinside.com 2019 - 2024. All rights reserved.