与FOS用户的实体关联

时间:2014-08-17 09:07:14

标签: php symfony doctrine-orm

我试图通过我的实体创建关联'条目'到实体FosUserUser。 我在数据库中创建了表条目,并与fos_user_user建立了关系,然后通过以下方式生成了实体: php app / console doctrine:mapping:import AcmeDemoBundle annotation php app / console doctrine:generate:entities AcmeDemoBundle

快捷方式中生成的实体:

/**
 * Entries
 *
 * @ORM\Table(name="entry", indexes={@ORM\Index(name="user_id", columns={"user_id"})})
 * @ORM\Entity
 */
class Entry {
 .............

 /**
 * @var \FosUserUser
 *
 * @ORM\ManyToOne(targetEntity="FosUserUser")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 * })
 */
private $user;

/**
 * Set user
 *
 * @param \Acme\DemoBundle\Entity\FosUseUser $user
 */
public function setUser(\Acme\DemoBundle\Entity\FosUseUser $user = null)
{
    $this->user = $user;
    return $this;
}
}

使用setUser(\ Acme \ DemoBundle \ Entity \ Entry $ user = null)生成的Doctrine实体,我将其更改为setUser(\ Acme \ DemoBundle \ Entity \ FosUseUser $ user = null)。

现在我正在尝试创建对象条目  公共函数addEntryAction(){

$em = $this->getDoctrine()->getManager();
$user = $this->getDoctrine()->getRepository('AcmeDemoBundle:FosUserUser')->find($this->getUser()->getId());

$new_entry = new Entry;
$new_entry->setEntry('test');
$new_entry->setUser($user);

$em->persist($new_entry);
$em->flush(); 

结束问题是Symfony不匹配我的实体并响应错误 在关联Acme \ DemoBundle \ Entity \ Entry#user上找到类型为Acme \ DemoBundle \ Entity \ FosUserUser的实体,但期待Acme \ DemoBundle \ Entity \ Entry

是否正确地创建了关联或问题在哪里?

1 个答案:

答案 0 :(得分:0)

好的,我解决了。 是另一个doctrine配置文件src / Acme / DemoBundle / Resources / config / doctrine / Entry.orm.xml与关系:

<many-to-one field="user" target-entity="Entry"> //should be target-entity="FosUserUser"
  <join-columns>
    <join-column name="user_id" referenced-column-name="id"/>
  </join-columns>
</many-to-one>