我正在使用Doctrine 2在Symfony 2.1.3上構建一個帶有用戶驗證部分的網站。 每個用戶都可以是「用戶組」的成員,並且每個用戶組可以包含許多用戶。爲什麼多對多關係是空的?
所以這是一個多對多的關係。
我遵循安全教程來驗證我的用戶,它完美地工作。 http://symfony.com/doc/current/cookbook/security/entity_provider.html
密碼被編碼;數據庫關係正常工作。
我有一個服務,處理「LoginSuccess」事件,並將用戶添加到會話中。 我認爲它可以正常工作,因爲我在我的父前端控制器中找到了我的用戶屬性。
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
$session = $request->getSession();
$session->set('_user', $token->getUser());
if ($session->has('referer')) {
if (($session->get('referer') !== null) && ($session->get('referer') !== '')) {
$response = new RedirectResponse($session->get('referer'));
} else {
$response = new RedirectResponse($request->getBaseUrl() . '/');
}
} else {
// if no referer then go to homepage
$response = new RedirectResponse($request->getBaseUrl() . '/');
}
return $response;
}
但現在,我想獲得鑑別的當前用戶的羣體,並給我一個空數組...
// Somewhere in a controller action.
$session = $this->getRequest()->getSession();
$current_user = $session->get('_user');
echo '<pre>';
exit(var_dump($current_user));
object(Me\MyProject\CoreBundle\Entity\User)#38 (16) {
[...]
["groups":"Me\MyProject\CoreBundle\Entity\User":private] => object(Doctrine\ORM\PersistentCollection)#34 (9) {
["snapshot":"Doctrine\ORM\PersistentCollection":private] => array(0) {
}
["owner":"Doctrine\ORM\PersistentCollection":private] => NULL
["association":"Doctrine\ORM\PersistentCollection":private] => NULL
["em":"Doctrine\ORM\PersistentCollection":private] => NULL
["backRefFieldName":"Doctrine\ORM\PersistentCollection":private] => NULL
["typeClass":"Doctrine\ORM\PersistentCollection":private] => NULL
["isDirty":"Doctrine\ORM\PersistentCollection":private] => bool(false)
["initialized":"Doctrine\ORM\PersistentCollection":private] => bool(false)
["coll":"Doctrine\ORM\PersistentCollection":private] => object(Doctrine\Common\Collections\ArrayCollection)#33 (1) {
["_elements":"Doctrine\Common\Collections\ArrayCollection":private] => array(0) {
}
}
}
}
我希望用戶訪問取決於某些功能他組(s)...所以對於我來說這不是真的很難得到這些團體。 有什麼想法?
我陽明模型配置文件:
Me\MyProject\CoreBundle\Entity\User:
type: entity
repositoryClass: FSB\Intranet\CoreBundle\Repository\UserRepository
table: users
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
[...]
manyToMany:
groups:
targetEntity: Usergroup
inversedBy: users
joinTable:
name: usergroups_for_user
joinColumns:
user_id:
referencedColumnName: id
inverseJoinColumns:
usergroup_id:
referencedColumnName: id
lifecycleCallbacks: { }
getGroups()也會返回一個空集合,但我沒有強制使用EAGER模式。你如何處理yml? –
也許你可以使用'fetch:eager'或'fetchmode:eager'。對不起,但我不使用yml語法。我想看看yml配置文件。 – jeremieca
我編輯過。 提取:渴望提出錯誤,並fetchmode:渴望不會改變什麼:( –