3
我在Zend框架中使用Doctrine 2。 我想要的是更新用戶密碼,而不需要用戶登錄。這是在實體類中執行此操作的正確方法嗎?Doctrine 2 - 在用戶未登錄的情況下更新用戶密碼
public function updatePassword($userId, $new_pass, $em){
$em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
$qb = $em->createQueryBuilder();
$q = $qb->update('\Application\User\Entity\User', 'u')
->set('u.password', $qb->expr()->literal($new_pass))
->where('u.userId = ?1')
->setParameter(1, "$userId")
->getQuery();
$p = $q->execute();
return $p;
}
非常感謝您的回覆:) – Coder
我使用了以下內容: '$ repo = $ em-> getRepository('Application \ User \ Entity \ UserDetails'); $ user = $ repo-> findBy(array('userId'=> 12)); $ user-> setPassword('123'); $ em-> persist($ user); $ em-> flush(); ' 我能夠通過提取獲取$用戶詳細信息,但無法設置密碼。 錯誤顯示爲「調用非對象上的成員函數setPassword()」。我有在實體類中定義的set方法。有什麼我失蹤了嗎? – Coder
如果找不到匹配的記錄,'find()'和'findBy()'將返回null/false。錯誤消息表明你得到一個空/假的值(至少沒有對象...這應該是唯一的情況,你沒有得到任何對象,據我所知)。 –