Mysql
 sql >> база данни >  >> RDS >> Mysql

Doctrine2.3 и каскадата OneToOne продължават да не работят

Добре намерих решението:

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

    ...
}

На първо място трябваше да посоча mappedBy и inversedBy (което вече опитах преди, но в грешна посока - mappedBy от страната на собственика, inversedBy от инверсната страна). Също така си помислих, че обърнатата страна не трябва да има отделен идентификатор и се опитах да използвам идентификатора на страната-притежател (User#id) като първичен ключ и за тази.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на bulk_update_mappings в SQLAlchemy за актуализиране на множество редове с различни стойности

  2. Какво е ПРОСТРАНСТВЕН ИНДЕКС и кога трябва да го използвам?

  3. PHP:ехо броя на дубликатите в таблица по най-често срещаните

  4. MySqlCommand Prepare() никога не задава IsPrepared на true

  5. Как да напишете MySQL заявка, където A съдържа (a или b)