반응형
원칙 2: 쿼리 작성기를 사용하여 쿼리 업데이트
안녕하세요, 아래의 질문을 받았는데 효과가 없는 것 같습니다.
$q = $this->em->createQueryBuilder()
->update('models\User', 'u')
->set('u.username', $username)
->set('u.email', $email)
->where('u.id = ?1')
->setParameter(1, $editId)
->getQuery();
$p = $q->execute();
그러면 다음 오류 메시지가 반환됩니다.
치명적인 오류:검출되지 않은 예외 'Doctrine\'ORM\쿼리\QueryException'과 함께 '[Semantical Error]행 0, col 38, wHERE 근처의 'testusername WHERE: 오류: 'testusername'이 정의되지 않았습니다.'라는 메시지가 표시됩니다.
도움이 된다면 고맙겠다
내 생각엔 네가 이걸 써야 할 것 같아.->set()
모든 값 매개변수를 설정하는 것이 훨씬 안전합니다.
$queryBuilder = $this->em->createQueryBuilder();
$query = $queryBuilder->update('models\User', 'u')
->set('u.username', ':userName')
->set('u.email', ':email')
->where('u.id = :editId')
->setParameter('userName', $userName)
->setParameter('email', $email)
->setParameter('editId', $editId)
->getQuery();
$result = $query->execute();
예를 들어, 사용자 ID가 데이터 속성으로 인쇄되어 있는 관리자 대시보드가 있어 JavaScript를 통해 검색할 수 있습니다.
업데이트는 이 방법으로 실행할 수 있습니다.
class UserRepository extends \Doctrine\ORM\EntityRepository
{
public function updateUserStatus($userId, $newStatus)
{
return $this->createQueryBuilder('u')
->update()
->set('u.isActive', '?1')
->setParameter(1, $qb->expr()->literal($newStatus))
->where('u.id = ?2')
->setParameter(2, $qb->expr()->literal($userId))
->getQuery()
->getSingleScalarResult()
;
}
AJAX 액션 처리:
# Post datas may be:
# handled with a specific custom formType — OR — retrieved from request object
$userId = (int)$request->request->get('userId');
$newStatus = (int)$request->request->get('newStatus');
$em = $this->getDoctrine()->getManager();
$r = $em->getRepository('NAMESPACE\User')
->updateUserStatus($userId, $newStatus);
if ( !empty($r) ){
# Row updated
}
원칙 2.5(Symfony3 위에 있음)를 사용한 작업 예.
잔돈만 조금 바꿔도 잘 됐다
$qb=$this->dm->createQueryBuilder('AppBundle:CSSDInstrument')
->update()
->field('status')->set($status)
->field('id')->equals($instrumentId)
->getQuery()
->execute();
언급URL : https://stackoverflow.com/questions/4337751/doctrine-2-update-query-with-query-builder
반응형
'programing' 카테고리의 다른 글
Netbeans(PHP)에서의 변수형 힌트 (0) | 2023.01.22 |
---|---|
'dateAdded'의 기본값이 잘못되었습니다. (0) | 2023.01.22 |
문자열이 무작위로 보이는지, 아니면 사람이 만들어 내고 발음할 수 있는지 어떻게 확인할 수 있습니까? (0) | 2023.01.02 |
이 사전 목록을 csv 파일로 변환하려면 어떻게 해야 합니까? (0) | 2023.01.02 |
SqlAlchemy 결과를 JSON으로 시리얼화하는 방법 (0) | 2023.01.02 |