0

im new для администратора sonata, можно ли использовать два объекта в одном классе администратора?sonata admin использует две сущности в admin

мое лицо пользователя,

App \ MyBundle \ Entity \ Users.php

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @var string 
* 
* @ORM\Column(name="username", type="string", length=45, nullable=true) 
*/ 
private $username; 

/** 
* @var string 
* 
* @ORM\Column(name="email", type="string", length=100, nullable=true) 
*/ 
private $email; 

мой UserProject сущность,

App \ MyBundle \ Entity \ UserProjects.php

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @var \User 
* 
* @ORM\ManyToOne(targetEntity="Users") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="userId", referencedColumnName="id") 
* }) 
*/ 
private $userid; 

/** 
* @var array 
* 
* @ORM\Column(name="projectId", type="array") 
*/ 
private $projects; 

мой класс администратора,

class UserAdmin extends SonataUserAdmin 
{ 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper 
     ->with('General') // these fields from Users Entity 
      ->add('username') 
      ->add('email') 

     ->with('Projects') // these fields from UserPrjects Entity 

     /* here i need to add a field for projects related to current user */ 
     } 
    } 

есть ли способ объединить эти два сущности?

+0

Вы не должны называть переменные такими, как 'userid'. Просто 'user' будет достаточно. Тогда, я считаю, объекты должны быть сингулярными, как в 'User', а не' Users'. – TautrimasPajarskas

ответ

1

Я предлагаю вам добавить один-ко-многим в стороне пользователя:

/** 
* @ORM\OneToMany(targetEntity="UserProjects", mappedBy="userid") 
*/ 
protected $userProjects; 

вы можете использовать объект UserProjects.

+1

Да, и не забудьте добавить правильные методы 'addUserProject()' и 'removeUserProject()' для пользовательского объекта. Таким образом, вы можете использовать '$ formMapper-> добавить ('userProjects', '', sonata_type_collection массив ( 'by_reference' => ложным, ), массива ( 'редактировать' => '', рядный «инлайн '=>' table ', ) ); 'в вашем админе. – TautrimasPajarskas