2017-01-15 1 views
0

어디에서나 보았지만 내 질문에 대한 답을 찾을 수 없습니다. 그것의 실체를 만들지 않고 문자열의 배열을 저장하는 교리 (symfony)와 가능한 그것 궁금해.Doctrine : 단일 값의 배열

예 : 단일 사용자는 여러 메일 주소 (일대 다)를가집니다. 메일 주소와 함께 다른 메타 데이터를 저장하고 싶지 않습니다. 예컨대 :

<?php 
class User { 
    private $mailAddresses = array(); 
    // ... 
    public function addEmailAddress($address) { 
     $this->mailAddresses[] = $address; 
    } 
    // .... 
} 

$user = new User(); 
$user->addEmailAddress('[email protected]'); 
$user->addEmailAddress('[email protected]'); 
$addresses - $user->getEmailAddresses(); 
// $addresses is a simple array like: array('[email protected]','[email protected]'); 

이 possbile 같은 것입니다 아니면 일대 다 관계를 사용하기 위해 UserEmailAddressEntity를 작성해야합니까?

/** 
* @ORM\Column(type="array") 
*/ 
private $emailAddresses = []; 

교리가 그에게로 직렬화 된 문자열을 저장하지만, 기업의 관점에서, 그것은 배열 될 것입니다 : 당신은 그냥 문자열의 간단한 배열이 필요하면

+0

Doctrine ORM에는 엔티티가 필요합니다. – Cerad

답변

0

, 당신은 array 유형을 사용할 수 있습니다.

세터를 통해 전체 배열을 수정하지 않고 단일 요소를 더 제어해야하는 경우 전자 메일 주소를 추가/관리하는 방법을 자유롭게 작성할 수 있습니다 (예 : addEmailAddress()). 귀하의 경우는 배열이나 데이터 유형도 인덱스를 저장하는 필수가 아니기 때문에

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#array-types

0

그래서 u는 직렬화가 필요하지 않습니다, 대신 배열 simple_array 사용하십시오. 그리고 simple_array은

implode(',', $array); 

그래서 당신은 쿼리 할 매우 쉽습니다 DB에 이메일을 분리 일반 혼수를 얻을 것이다 기본적으로. 공간이 적고 불필요한 기호가 적으며 작업이 약간 빨라집니다.

fields: 
    [...] 
    emails: 
     type: simple_array 
    [...] 

어떤 이유로 자신이 댓글을 추가 테이블을 만드는 경우 "(DC2Type : simple_array)"에 당신이 YAML을 사용하는 경우

/** 
* @ORM\Column(type="simple_array") 
*/ 

또는 :

엔티티 주석은 것 이메일 열.

연관 배열을 저장해야하는 경우 simple_array 대신 array를 사용하는 것이 좋습니다.