sql >> Database teknologi >  >> RDS >> Mysql

Doctrine2.3 og OneToOne-kaskaden fortsætter, ser ikke ud til at virke

Ok fandt løsningen:

/**
 * 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;

    ...
}

Først og fremmest skulle jeg specificere mapdBy og inversedBy (som jeg allerede prøvede før, men i den forkerte retning - mapdBy på ejersiden, inversedBy på inversed side). Jeg troede også, at den omvendte side ikke behøvede at have et separat id, og jeg forsøgte at bruge id'et for ejersiden (User#id) som primær nøgle for denne også.



  1. MySQL CURRENT_TIMESTAMP ved oprettelse og ved opdatering

  2. Wildcard-søgning i MySQL fuldtekstsøgning

  3. PLS-00201 identifikator 'PACKAGENAME.PROCEDURENAME' skal erklæres

  4. Bedre måde at vælge alle kolonner fra første tabel og kun én kolonne fra anden tabel på indre joinforbindelse