Symfony, пользовательский пакет sonta, многие ко многим

Я делаю небольшой проект, в котором я использую пользовательский пакет sonata для простого администрирования моих пользователей.

Но у меня есть другая сущность, которую называют заказ. При этом сущность связана с одним пользователем.
Где мне написать аннотацию manyToOne?

Спасибо
С наилучшими пожеланиями

1

Решение

Если вы используете sonata admin, вы можете легко расширить его основные пакеты, используя EASYEXTENDS BUNDLE он будет генерировать дочерний пакет, например

php app / console sonata: легко расширяется: генерировать 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;
}

В файле конфигурации доктрины определения соответствия для объекта пользователя

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

Если вы используете аннотации, вы можете найти эквивалентное отображение из Docs

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]