Symfony FOS和关系

时间:2014-07-26 14:11:04

标签: php symfony fosuserbundle

我使用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

1 个答案:

答案 0 :(得分:0)

根据此http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-joincolumn namereferencedColumnName@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;