symfony2では 'Employee'エンティティで他のエンティティとのマッピングが多く含まれているため、私のプロジェクトのエンティティ。私のマッピングのいくつかは次のようになります:例外:Symfony Component Security Core Authentication Token UsernamePasswordToken :: serialize()は文字列またはNULLを返す必要があります
/**
* @var EmployeeDesignation
*
* @ORM\ManyToOne(targetEntity="EmployeeDesignation")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="employee_designation_id", referencedColumnName="id")
* })
*/
private $employeeDesignation;
/**
* @var EmployeeDesignation
*
* @ORM\ManyToOne(targetEntity="EmployeeType")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="employee_type_id", referencedColumnName="id")
* })
*/
private $employeeType;
認証はマッピングなしで問題なく動作します。私が試してみました
You cannot refresh a user from the EntityUserProvider that does not contain an identifier. The user object has to be serialized with its own identifier mapped by Doctrine.
:私は上記の方法を行った後、次のエラーを取得しています
class Employee implements AdvancedUserInterface, \Serializable{
/**
* serialize the username
* @return serialize
*/
public function serialize() {
return serialize($this->emailOfficial);
}
/**
* unserialize
* @param $data
*/
public function unserialize($data) {
$this->em = unserialize($data);
}
:私は「シリアル化()」と「アンシリアライズ()」以下のようなことでメソッドを試してみましたようであるように、前のエラーを取り除くために、この方法は、以下のとおり
Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::serialize() must return a string or NULL
だから、誰もがこの問題から克服する方法を提案してくださいすることができますか?
ありがとうございました!!!非常に役立ちます! – Ben
私は多くの時間をデバッグしてくれました。ありがとうございます。 –
ユーザーエンティティがユーザーにリンクする関係を持っている場合、このエラーメッセージが表示されると思います。例: 'User-> Article-> Author'(' User'には多くの 'Articles 'Article'は著者として' User'を持っています)、シリアライゼーションは失敗します。なぜ、プライマリ・キー(id)だけを使って 'User'を直列化すると、すべてのことが正しく行われます。だから、 '__sleep'関数を使ってそこに主キーを返します。 – Dmitriy