我尝试编写一个方法,其任务是仅返回与特定实体关联的项集合的选定元素。
/**
* @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
任何想法如何解决这个问题?
答案 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。