symfony,sonta用户捆绑,很多很多

时间:2015-04-08 22:59:10

标签: php symfony sonata-admin symfony-sonata sonata-user-bundle

我正在做一个小项目,我使用sonata用户包来轻松管理我的用户。

但我有另一个名为order的实体。在此实体中与一个用户链接。 我在哪里写下manyToOne anotation?

由于 最好的问候

1 个答案:

答案 0 :(得分:1)

如果您正在使用sonata admin,那么您可以使用EASYEXTENDS BUNDLE轻松扩展其核心包,它将生成子包,例如

  

php app / console sonata:easy-extends:生成SonataUserBundle -d src Reference

一旦你有SonataUserBundle的扩展包,就可以在子包的实体或其学说配置文件中指定你的关系

<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                  http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="Application\Sonata\UserBundle\Entity\User" table="fos_user_user">
        <id name="id" column="id" type="integer">
            <generator strategy="AUTO" />
        </id>
        <one-to-many  field="orders" target-entity="Order" mapped-by="user" />
    </entity>
</doctrine-mapping>

在您的用户实体

use Doctrine\Common\Collections\ArrayCollection;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
class User extends BaseUser
{
    protected $orders;
    public function __construct()
    {
        $this->orders= new ArrayCollection();
    }
//.. Getter and setter
}

在您的订单实体中添加映射以指回用户实体

class Order
{
    protected $user;
}

按顺序将doctrine配置文件定义到用户实体的映射

<many-to-one  field="user" target-entity="User" inversed-y="orders" join-column="user_id">

如果您使用的是注释,则可以从Docs

中找到等效的映射