我在两个实体中定义了一个ArrayCollection关系:
/**
* User
*
* @ORM\Table(name="users", uniqueConstraints= {@ORM\UniqueConstraint(name="email_UNIQUE", columns={"email"})}, indexes={@ORM\Index(name="email_id", columns={"id_user", "email"})})
* @ORM\Entity
*/
class User
{
/**
* @ORM\ManyToOne(targetEntity="App\Entities\Usercharts", inversedBy="charts")
* @ORM\JoinColumn(name="id_user", referencedColumnName="id_user")
*/
private $userscharts;
和
/**
* Useritems
*
* @ORM\Table(name="useritems", indexes={@ORM\Index(name="userid", columns={"id_user"}), @ORM\Index(name="chartno", columns={"chart_no"})})
* @ORM\Entity
*/
class Usercharts
{
/**
* @ORM\OneToMany(targetEntity="App\Entities\User", mappedBy="userscharts")
*
*/
private $charts;
public function __construct()
{
$this->charts = new ArrayCollection();
}
问题是ArrayCollection只在填充表中的最后一项中填充了一个值;例如,对于这些数据,
'1201','4769'
'1202','4769'
'1400','4769'
'1434','4769'
'1435','4769'
'1510','4769'
'2000','4769'
'2050','4769'
'3726','4769'
'3808','4769'
'7950','4769'
ArrayCollection $ charts值在模板树枝
中仅返回7950 <ul>
{% for chart in user.userscharts %}
<li>{{ chart.chartno }}</li>
{% endfor %}
</ul>
我也尝试为chart_no添加主键标识符(这似乎有意义):
/**
* @var integer
* @ORM\Id
* @ORM\Column(name="chart_no", type="integer", nullable=false)
*/
private $chartno = '';
但这会导致
OutOfBoundsException.php line 40
at OutOfBoundsException::missingPrimaryKeyValue('App\Entities\Usercharts', 'chartno') in AbstractProxyFactory.php line 125
at AbstractProxyFactory->getProxy('App\Entities\Usercharts', array('userid' => '4769')) in UnitOfWork.php line 2698
如何正确修改实体主义声明以获取完整的图表数组?