Я делаю небольшой проект, в котором я использую пользовательский пакет sonata для простого администрирования моих пользователей.
Но у меня есть другая сущность, которую называют заказ. При этом сущность связана с одним пользователем.
Где мне написать аннотацию manyToOne?
Спасибо
С наилучшими пожеланиями
Если вы используете 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
Других решений пока нет …