我使用FosUserBundle。我有实体包装和订单。我正在尝试将Order与fos_user绑定。
我在这个网站上建模Symfony 2 FOSUserBundle产品关系表
用户:class User extends BaseUser
{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
...
:
namespace MySaleBundleEntity;
use DoctrineORMMapping as ORM;
use DoctrineCommonCollectionsArrayCollection;
use MyUserBundleEntityUser;
/**
* @ORMEntity
* @ORMTable(name="order")
*/
class Order {
/**
* @ORMColumn(type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORMManyToOne(targetEntity="MyUserBundleEntityUser", cascade={"remove"})
* @ORMJoinColumn(onDelete="CASCADE")
*/
protected $user;
/**
* @ORMOneToOne(targetEntity="Packages", inversedBy="id")
*/
protected $package;
/*... */
/* Seetery i gettery */
public function setUser(User $owner)
{
$this->user = $owner;
}
public function setPackage($val)
{
$this->package = $val;
}
/*... */
}
控制器:
$usr= $this->container->get('security.context')->getToken()->getUser();
$order= new Order();
$order->setUser($usr);
/*... */
$em = $this->getDoctrine()->getManager();
$em->persist($order);
$em->flush();
我看到:Unrecognized field: user_id
由此可知http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-joincolumn name
和referencedColumnName
是@JoinColumn
的必需属性
改变这
/**
* @ORMManyToOne(targetEntity="MyUserBundleEntityUser", cascade={"remove"})
* @ORMJoinColumn(onDelete="CASCADE")
*/
protected $user;
/**
* @ORMManyToOne(targetEntity="MyUserBundleEntityUser", cascade={"remove"})
* @ORMJoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $user;