我在创建新用户时遇到了一些奇怪的错误。
Catchable Fatal Error: Object of class Pr\UserBundle\Entity\Group could not be converted to string in /var/www/symfony/webprojekt/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php line 120
这种情况发生了,因为我改变了选择" usergroup"因为我不想为用户分配多个用户组(例如ROLE_USER),所以只需一个选择。
我在下方添加了用户和群组实体,但我没有看到任何问题 - 我再次陷入困境:(
/**
* @ORM\Entity
* @ORM\Table(name="sys_user")
*/
class User extends BaseUser
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=8, nullable=true)
*/
protected $mobilepin;
/**
* @ORM\Column(type="integer", nullable=true)
*/
protected $client;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $client_id;
/**
* @ORM\Column(type="string", length=16383, nullable=true) //16383 = max varchar utf8
*/
private $imageurl;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $firstname;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $lastname;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $emailalert;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $phone;
/**
* @ORM\Column(type="integer", nullable = true)
*/
protected $lock_state;
/**
* @ORM\Column(type="array", nullable=true)
* @Assert\NotBlank()(message="Check locations")
*/
private $locations;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $usergroups;
/**
* @ORM\Column(type="string", length=5, options={"fixed" = true, "default" = "de_DE"})
*/
private $locale = 'de_DE';
/**
* @ORM\Column(type="string", length=32)
*/
private $timezone = 'UTC';
/**
* @ORM\Column(type="array", nullable=true)
*/
private $created='1';
我小组的那个
/**
* @ORM\Entity
* @ORM\Table(name="user_group")
*/
class Group
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $name;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $roles;
至少我是如何创造选择的:
->add('usergroups', 'entity', array('class' => 'PrUserBundle:Group','property' => 'name','required' => true, 'empty_value' => 'Benutzergruppe','multiple' => false, 'expanded' => false))
很奇怪:(
编辑:如果我改变"用户组"从
* @ORM\Column(type="string", length=255, nullable=true)
到
* @ORM\Column(type="array", nullable=true)
它工作正常。但是,保存数据看起来像
O:26:"Pr\UserBundle\Entity\Group":3:{s:5:"
这看起来非常奇怪和错误。我考虑过保存已分配组的ID
答案 0 :(得分:1)
如果要在User和UserGroup之间创建关系,则需要更改列定义:
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $usergroups;
到
/**
* @ManyToMany(targetEntity="Group")
*/
private $usergroups;
然后在组中定义反向关系:
Group {
/**
* @ManyToMany(targetEntity="User")
*/
private $users;
您可以在此处详细了解有关学说的关系:http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html或此处:http://symfony.com/doc/current/book/doctrine.html#entity-relationships-associations
·彼得
答案 1 :(得分:1)
尝试将用户实体中的“用户组”字段映射到组实体,而不是将其设置为字符串字段。
/**
* @ManyToOne(targetEntity="Group")
* @JoinColumn(name="group_id", referencedColumnName="id")
*/
private $usergroups;
您还可以在此处查看有关映射的文档: http://symfony.com/doc/current/book/doctrine.html#relationship-mapping-metadata http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#association-mapping