Doctrine2在实体类中使用标准

时间:2012-11-18 10:57:03

标签: php symfony doctrine-orm

我尝试编写一个方法,其任务是仅返回与特定实体关联的项集合的选定元素。

/**
 * @ORM\OneToMany(targetEntity="PlayerStats", mappedBy="summoner")
 * @ORM\OrderBy({"player_stat_summary_type" = "ASC"})
 */
protected $player_stats;

public function getPlayerStatsBySummaryType($summary_type)
{
    if ($this->player_stats->count() != 0) {
        $criteria = Criteria::create()
            ->where(Criteria::expr()->eq("player_stat_summary_type", $summary_type));

        return $this->player_stats->matching($criteria)->first();
    }

    return null;
}

但我收到错误:

PHP Fatal error:  Cannot access protected property Ranking\CoreBundle\Entity\PlayerStats::$player_stat_summary_type in /Users/piotrkowalczuk/Sites/lolranking/vendor/doctrine/common/lib/Doctrine/Common/Collections/Expr/ClosureExpressionVisitor.php on line 53

任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

固定。它应该是:

    $criteria = Criteria::create()
        ->where(Criteria::expr()->eq("playerStatSummaryType", $summary_type));

答案 1 :(得分:1)

确保PlyerStats实体具有getPlayerStatSummaryType()公共方法。它由@ORM\OrderBy注释使用,并且(我猜)由getPlayerStatsBySummaryType()内的自定义条件使用。

答案 2 :(得分:0)

$player_stat_summary_type类中为Ranking\CoreBundle\Entity\PlayerStats属性提供getter。