我有一个由EasyAdmin管理的实体产品,我还使用fos UserbUNDLE进行用户管理。 一切正常,但是当我在easyadmin中添加新用户时,我有一个下拉列表的用户,但我想自动拥有经过身份验证的用户。
我已经在“产品”类别的属性中定义了用户与产品之间的一对多关系。
/**
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
产品实体:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Product
*
* @ORM\Table(name="product")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository")
* @Vich\Uploadable
*/
class Product
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="reference", type="string", length=150)
*/
private $reference;
/**
* @ORM\ManyToOne(targetEntity="Type")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id")
*/
private $type;
/**
* @ORM\Column(type="boolean")
*/
public $status;
/**
* @var string
*
* @ORM\Column(name="titre", type="string", length=150)
*/
private $titre;
用户:
<?php
namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
如何自动获取?
答案 0 :(得分:0)
我们可以提供更多详细信息吗?实体和控制器,因为我认为您没有使用好的targetEntity
答案 1 :(得分:0)
我有一个完全相同的问题,我的意思是,在某些情况下,我只需要获得我选择中当前记录的用户信息,有时我就需要从数据库中获取完整的用户列表
也许我找到的解决方案可以帮助您:
Get the logged user info in the easyadmin select
为简单起见,您必须覆盖easyadmin formbuilder并仅询问当前记录的用户信息
$formBuilder->add('user', EntityType::class, array(
'class' => 'AppBundle:User',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.id = :id')->setParameter('id',$this->getUser()->getId());
},
));
return $formBuilder;