PostgreSQL 데이터베이스에서 Doctrine ORM의 ArrayCollection
을 사용하여 이상한 일들을 발견했습니다 (Symfony 3 프로젝트에서 이것을 사용함).PostgreSQL의 Doctrine ORM ArrayCollection
역할이있는 내 User
클래스를 가져 오려면 기본 역할 ROLE_USER
으로 시작되며 array
이어야합니다.
class User implements UserInterface, Serializable
{
/**
* @var ArrayCollection
*
* @ORM\Column(name="roles", type="array")
*/
private $roles;
public function __construct()
{
$this->roles = new ArrayCollection();
$this->roles->add('ROLE_USER');
}
}
이것은 다음과 같이 데이터베이스에 저장됩니다. ArrayCollection
의 명확 부분은 데이터베이스에 누락되어 있기 때문에 User
으로 로그온을 시도 할 때 Serialization
오류를 줄 것이다
O:43:"Doctrine\Common\Collections\ArrayCollection":1:{s:53:"
.
해결책을 찾기 위해 Google에서 this Github issue을 발견했습니다. 내가 이해하기에 이것은 버그이며 을 PostgreSQL
환경에서 사용할 수 없습니다.
@ORM\Column
태그의 유형을 정의하지 않으면 도움이되지 않지만 데이터베이스에 다음을 저장하고 Symfony
은 역할을 검색하는 데 사용할 수 없습니다. Doctrine\Common\Collections\[email protected]
그리고 모두가 그래서 객체를 반환하지 않는 유형으로 simple_array
또는 json
를 사용하여없는 이동의
사람이에 대한 해결 방법 또는 솔루션이 있습니까? 나는 정말 후회하기 시작했다 MySQL
에서 PostgreSQL
참고 : 코드는 MySQL
에서 정상적으로 작동하고 있었고 데이터베이스를 전환했다.
json으로 일반적으로 데이터베이스에 어떤 모습까요? 전체 문자열을 의미합니다. –