doctrine/doctrine2 — pull request #420 by djlambert (2012-08-08 18:38:54+00:00)
Title: Cascade dependent identities to associations

Currently when an entity in a one-to-one association gets its identity from another entity it requires calling the setter for the associated entity from the setter in the identity source entity setter or passing the identity source entity to the associated entity's constructer, something similar to this:

```php
address = $address;
$address->setUser($this); // Calling setter in associated entity
}
}

/**
* @Entity
*/
class Address
{
/** @Id @OneToOne(targetEntity="User", inversedBy="address") */
private $user;

__construct(User $user)
{
$this->user = $user; // Passing identity source to constructor
}

public setUser(User $user)
{
$this->user = $user;
}
}

$user = new User();
$em->persist($user);
$em->flush();

$address = new Address($user); // If using constructor
$user->setAddress($address);
// OR
$user->setAddress(new Address()); // If using setter

$em->flush();
```

This PR adds checks for associations with cascade persist that have dependent identities which are empty, and sets the field in the associated entity to the identity source entity. Granted it's not complicated to do as the previous example, but this allows for simpler code. It also seems a logical assumption that when the association is cascade persist this should happen automatically:
```php
address = $address;
}
}

/**
* @Entity
*/
class Address
{
/** @Id @OneToOne(targetEntity="User", inversedBy="address") */
private $user;

// This could be removed if not needed
public setUser(User $user)
{
$this->user = $user;
}
}

$user = new User();
$em->persist($user);
$em->flush();

$user->setAddress(new Address());

$em->flush();
```
Now only if it wasn't so wordy to explain :)