2

我建立了一个 Symfony2 项目,安装了 Sonata 和 FOS 用户包

我生成了一个扩展 BaseUser 的自定义用户类。这是一个摘录:

namespace Application\Sonata\UserBundle\Entity;

use Sonata\UserBundle\Entity\BaseUser as BaseUser;
use Doctrine\ORM\Mapping as ORM;

class User extends BaseUser {
  ..
  /**
   * @ORM\ManyToOne(targetEntity="MyProject\UserBundle\Entity\Team", inversedBy="members")
   * @ORM\JoinColumn(type="integer", name="team_id", referencedColumnName="id", nullable=true)
   */
  protected $team;

  public function setTeam(\MyProject\UserBundle\Entity\Team $team)
  {
     $this->team = $team;
  }

  public function getTeam()
  {
    return $this->team;
  }

我还有一个可以容纳一些用户的实体“团队”。这是一个摘录:

class Team {
  /**
   * @ORM\OneToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", mappedBy="team")
   */

  protected $members;

  public function setMembers(\Doctrine\Common\Collections\ArrayCollection $members)
  {
     $this->members = $members;
  }

  public function getMembers()
  {
     return $this->members;
  }

我使用 Sonata Admin 包来做基本的 CRUD。创建一个有一些用户的团队是没有问题的

<?php
class TeamAdmin extends Admin {
  protected function configureFormFields(FormMapper $formMapper)
  {
    $formMapper

        ->add('members', 'entity', array(
                'required' => FALSE,
                'class' => 'ApplicationSonataUserBundle:User',
                'property' => 'username',
                'label' => 'Team members',
                'multiple' => TRUE,
            ))
    ;
  }

当我进入团队的编辑屏幕或删除时,问题就出现了。

注意:未定义索引:/Users/sven/projects/MyProject/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php 行 1575 中的团队

我阅读了十几个有关此错误的线程,但它们都告诉我我在注释中使用了正确的字段名称和列名称。这是否与扩展 BaseUser 类有关?

对此的任何帮助表示赞赏!

4

1 回答 1

0

您是否放入$this->members = new ArrayCollection()了 Team 实体的 __construct() ?

于 2012-12-24T21:43:06.650 回答