나는 Entity : Company에 컬럼이있다 : Type.열이 배열 인 경우 어떻게 수행합니까?
유형은 문자열 또는 문자열 배열 일 수 있습니다.
예 : 유형은 "Foo", "Bar"또는 배열 ("Foo", "Bar") 일 수 있습니다.
"Bar"가 포함 된 모든 회사를 얻는 방법을 알 수 없습니다.
는 난 단지 유형이 "바"인 회사를 가져$qb = $this->companyRepository()->createQueryBuilder("c");
$companies = $qb
->select("c")
->Where($qb->expr()->in('c.type', array($qb->expr()->literal('Bar'))))
->getQuery()
->getResult();
, 그리고 그 배열 ("푸", "바") 인 사람을 시도했다.
동일한 결과를 사용하여 $ qb-> expr() ->() 대신 $ qb-> expr() -> like (...)를 시도했습니다.
유형 에 "Bar"가 포함 된 회사를 얻으려면 어떻게해야합니까? (유형에 3 가지 값 이상이 있다고 가정)
이벤트를 교리는 데이터베이스 레벨에서, 당신이 배열 열 유형을 사용할 수 있지만 개별 배열 요소에 액세스 할 수 없습니다 (결국 텍스트의 한 묶음 일뿐입니다). 따라서 그러한 쿼리를 수행 할 수 없습니다. 정규식 쿼리 또는 데이터베이스 정규화의 두 가지 옵션이 있습니다. – Yoshi
흥미 롭습니다. 데이터베이스를 정상화 할 수 없습니다. 정규 표현식은 어떻게 나를 도와 줄 수 있습니까? 모든 회사를 가져 와서 foreach 루프에서 유형을 테스트해야한다고 가정합니다. – abernard
doctrine 배열 열 유형을 사용하려면 배열 값 안에 쉼표가 없어야합니다. 따라서 검색 할 수있는 모든 값은 열의 값만 필요하고 쉼표로 시작하거나 쉼표로 끝나거나 둘 다 필요합니다. 그리고이 네 가지 경우에 유효한 정규 표현식을 작성하고이를 여러분의 회로로 사용해야합니다. – Yoshi