본문 바로가기
MySql

MySQL 배열 필드에 Doctrine2의 특정 값이 포함되어 있는지 쿼리하는 방법이 있습니까?

by 베이스 공부 2021. 1. 22.
반응형

Symfony2 + Doctrine으로 시작합니다.

내 스키마에 'array' 유형의 roles 열이 포함 된 User 개체 (fos_user)가있는 테이블이 있습니다.

Doctrine은이 유형의 필드를 php 'array'에서 'longtext'(mysql의 경우)로 직렬화하여 저장합니다.

따라서 다음 사용자를 DB에 저장했다고 가정 해 보겠습니다.

User1: array(ROLE_ADMIN, ROLE_CUSTOM1)
User2: array(ROLE_ADMIN, ROLE_CUSTOM2)
User3: array(ROLE_CUSTOM2)

이제 컨트롤러에서 ROLE_ADMIN이 설정된 모든 사용자를 선택하고 싶습니다. Is there a way to write a DQL query which would directly return me User1 and User2? 아니면 모든 사용자를 가져와 역할 열의 직렬화를 해제하는 Doctrine을 갖고 각 사용자에 대해 in_array ( 'ROLE_ADMIN', $ user-> getRoles ()) 를 수행해야합니까?



 

해결 방법

 

이 설명서에 설명 된 LIKE 문을 사용할 수 있습니다 (예, 직렬화 된 객체에서도 가능).

역할에 대한 엔터티 클래스를 만들고 ManyToMany 연결을 통해 사용자 엔터티와 조인하는 것이 좋습니다.

 

참조 페이지 https://stackoverflow.com/questions/13126220

 

 

반응형

댓글