两个具有一对一关系的实体 第一个是桌子 第二个是视图
核仁
/**
* Nuclei
*
* @ORM\Table(name="datinuclei")
* @ORM\Entity(repositoryClass="App\Repository\NucleiRepository")
*/
class Nuclei
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="NONE")
*/
private $id;
/**
* @var NucleiStatistiche
*
* @ORM\OneToOne(targetEntity="NucleiStatistiche", fetch="EAGER")
* @ORM\JoinColumn(name="id", referencedColumnName="id", nullable=false)
*/
private $statistiche;
NucleiStatistiche
/**
* NucleiStatistiche
*
* @ORM\Table(name="nuclei_001")
* @ORM\Entity()
*/
class NucleiStatistiche
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="NONE")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="totale_conferimenti", type="integer", nullable=false)
*/
private $totale_conferimenti;
/**
* @var string
*
* @ORM\Column(name="totale_indifferenziata", type="integer", nullable=false)
*/
private $totale_indifferenziata;
/**
* @var string
*
* @ORM\Column(name="percentuale_indifferenziata", type="integer", nullable=false)
*/
private $percentuale_indifferenziata;
public function getTotaleConferimenti(): ?string
{
return $this->totale_conferimenti;
}
public function getTotaleIndifferenziata(): ?string
{
return $this->totale_indifferenziata;
}
public function getPercentualeIndifferenziata(): ?string
{
return $this->percentuale_indifferenziata;
}
使用
在控制器上对其进行测试$this->getDoctrine()->getRepository(Nuclei::class)->findBy(
array('comune' => $this->id_comune, 'id' => '14523')
);
{% for nucleo in nuclei %}
{{ dump(nucleo.statistiche) }}
{% endfor %}
App\Entity\NucleiStatistiche {#925 ▼
-id: 14523
-totale_conferimenti: 107
-totale_indifferenziata: 2
-percentuale_indifferenziata: 2
}
我可以使用转储查看值,但是当在树枝中引用属性时,我会报错
{% for nucleo in nuclei %}
{{ dump(nucleo.statistiche.totale_conferimenti) }}
{% endfor %}
属性totale_conferimenti
和方法totale_conferimenti()
都不是,
存在gettotale_conferimenti()
/ istotale_conferimenti()
/ hastotale_conferimenti()
或__call()
并在App\Entity\NucleiStatistiche
类中具有公共访问权限。
我不知道解决方案是什么...疯了!!!
答案 0 :(得分:3)
公理:一切都很难,除非您了解它。
我们的首要需求是了解其工作原理。在PHP中,git fetch origin
git checkout <branch>
git rebase origin/master
/ private
表示它们将在对象范围之外不可用。 Twig尝试从对象范围之外访问它们,这会导致问题。
换句话说:您的Twig尝试使用的功能不可用。
但是,我敢肯定,您已经看过Twig似乎在使用protected
/ private
成员,因此您的经验证据似乎与我概述的理论相矛盾。但是只是表面上。您了解了问题所在,但是目前您还不了解如何使用这些关键字。
documentation对此很清楚,当它解释说使用foo.bar时,如果bar不是foo的成员,那么它最终将检查getter foo.getBar()。因此,您将需要实现protected
并对其成员进行类似的操作。我有一段时间没有使用Twig了,但是如果记忆很好,getStatistiche
就需要totale_conferimenti
。
编辑(Jakumi的有用评论):
您大约占90%。 Symfony通常采用驼峰式大小写,在这种情况下,您假定的吸气剂名称将是正确的。错误消息指出了预期的吸气剂名称。还有其他方便的信息:转储的输出在每个私有/不可访问的资产前都有-,在每个公共财产前都有+。但是,该诊断是100%正确的,缺少“无法访问的”属性的吸气剂,并且没有可能的回退。