我使用FosUserBundle。我有实体包和订单。我正在尝试将Order与fos_user绑定。
我在此网站Symfony 2 FOSUserBundle Relation to Products Table
上建模用户:
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
...
订单:
namespace My\SaleBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use My\UserBundle\Entity\User;
/**
* @ORM\Entity
* @ORM\Table(name="order")
*/
class Order {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="My\UserBundle\Entity\User", cascade={"remove"})
* @ORM\JoinColumn(onDelete="CASCADE")
*/
protected $user;
/**
* @ORM\OneToOne(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();
我看到:无法识别的字段:user_id
答案 0 :(得分:0)
根据此http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-joincolumn name
和referencedColumnName
是@JoinColumn
的必需属性
更改此
/**
* @ORM\ManyToOne(targetEntity="My\UserBundle\Entity\User", cascade={"remove"})
* @ORM\JoinColumn(onDelete="CASCADE")
*/
protected $user;
到
/**
* @ORM\ManyToOne(targetEntity="My\UserBundle\Entity\User", cascade={"remove"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $user;