2014-07-09 5 views
0

간단한 질문 저는 사용자 및 사용자 _preferences 컬렉션이 있습니다. 사용자 환경 설정은 사용자 확장이라고 가정합니다. 예를 들어 당신이 볼 수있는Doctrine : 관계 일대일 (단순)

Users 
-------------------------------- 
Id | Name 
1 | Test 
2 | Luis 
3 | Lopes 

Users_Preferences 
-------------------------------- 
Id | User_ID | Color | TrackSystem | ReceiveNewsletter 
1 | 1 | Green | after_seen |  no 
2 | 3 | Red | dont_track |  yes 

그래서 나는 관계를 만들려하지만 난 자신의 환경 설정을 둘 다 설정 기본값을 선택하는 사람들을 강제하고 있지 않다으로 users_preferences에 기록이되지 않을 수 있습니다.

또한 내 사용자 저장소 및 엔티티에서 액세스하려고합니다.

# src/CrazyBundle/Controllers/WhateverController.php 
/** @var UsersPreferences $userPreferences **/ 
$userPreferences = $this->getUser()->getPreferences(); 
$userPreferences->getColor() 

// OR 
$this->getUser()->getPreference("color") 

이것은 Symfony에서 작업하는 사람에게 기본적인 질문입니다. :) 제일 연습을 먼저하십시오.

감사합니다.

+0

사용이. doctrine-project.org/en/2.0.x/reference/association-mapping.html#one-to-one-unidirectional) – 0riginal

+0

질문은 여전히 ​​동일합니다. 저것은 총 의미를 만든다 - 나는 Bidirectonal을하고 있었고, 삽입하려고 할 때 문제의 이유 thats 다. 질문의 두 번째 부분에 대해 내가 그 보호 된 var 검색 할 경우 엔티티 환경 설정을 것입니다? 내가하는 일이 의미가있다. TWIG에서 user.preferences.color와 같은 것을 할 수 있습니까? –

+0

예, 사용자 개체가있는 경우 기본 설정 개체를 가져 와서 – 0riginal

답변

2

나는 User와 UserProperty가 Entite라고 가정합니다. OneToOne 관계와 당신이 선호하는 속성을 AET 수있는 사용자 개체에 대해서는

:

/** 
* @ORM\OneToOne(targetEntity="UserPreferences") 
* @ORM\JoinColumn(name="preference_id", referencedColumnName="id", nullable=true) 
**/ 
protected $preference; 

당신은 getter와 이에 대한 세터를 생성합니다.

이 후에는 사용자로부터 UserPreference 개체를 얻을 수 있습니다 :

$user->getPreference()->getColor() 

또는 나뭇 가지에 : // 문서 : 관계 [OneToOne - 교리] (HTTP에 대한

{{ user.preference.color}} 
+0

색을 얻을 수 있습니다. 내 의견에 대해 말한 내용과 거의 같습니다. 자사의 이상한 경우는 그나마 해달라고 해결책을 찾았을 때 u는 "지금은 왜 이랬지?" –