sql >> Database >  >> RDS >> Mysql

Doctrine2.3 en OneToOne-cascade persisteren lijkt niet te werken

Ok de oplossing gevonden:

/**
 * User
 *
 * @ORM\Table("users")
 * @ORM\Entity
 */
class User extends UserEntity
{
    ...

    /**
     * @ORM\OneToOne
     * (
     *      targetEntity="UserPreferences",
     *      cascade={"persist", "remove"},
     *      inversedBy="user"
     * )
     */
    protected $userPreferences;
}

/**
 * @ORM\Table("user_preferences")
 * @ORM\Entity
 */
class UserPreferences extends UserPreferencesEntity
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     */
    protected $id;

    /**
     * @var int
     *
     * @ORM\OneToOne(targetEntity="User", mappedBy="id", cascade={"persist", "remove"})
     */
    protected $user;

    ...
}

Allereerst moest ik mappedBy en inversedBy specificeren (wat ik al eerder heb geprobeerd, maar in de verkeerde richting - mappedBy aan de eigenaarskant, inversedBy aan de omgekeerde kant). Ik dacht ook dat de omgekeerde kant geen aparte id hoefde te hebben en ik probeerde ook de id van de eigenaarskant (User#id) als primaire sleutel voor deze te gebruiken.



  1. Rijversiebeheer in MySQL

  2. Hoe dubbele rijen te verwijderen zonder unieke identificatie

  3. Fout:Client ondersteunt het door de server gevraagde authenticatieprotocol niet; overweeg om MySQL-client te upgraden

  4. SQL Cross Join