Jest to jak najbardziej możliwe i bardzo ładnie opisane w dokumentacji Doctrine2. Przykład poniżej.
namespace Acme\Bundle\ShopBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="customer_preferences") */ class CustomerPreferences { /** * @ORM\Id * @ORM\OneToOne(targetEntity="Acme\Bundle\ShopBundle\Entity\Customer") * @ORM\JoinColumn(name="customer_id", referencedColumnName="id") */ private $customer; // ... }
W tabeli wygenerowanej z tej encji pole customer_id
będzie zarówno kluczem obcym wskazującym na pole id
w tabeli customer
jak i kluczem głównym.
Z jednej strony wydaje się to oczywiste i intuicyjne, ale parę razy przekonałem się, że rozwiązania w Doctrine2 nie zawsze są oczywiste i intuicyjne. Na szczęście akurat w tym wypadku są.