Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kaskada utrzymywania Doctrine2.3 i OneToOne nie działa

OK, znalazłem rozwiązanie:

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

    ...
}

Przede wszystkim musiałem określić mappedBy i inversedBy (co próbowałem już wcześniej, ale w złym kierunku - mappedBy po stronie właściciela, inversedBy po stronie odwróconej). Pomyślałem też, że strona odwrócona nie musi mieć oddzielnego identyfikatora i próbowałem użyć identyfikatora strony będącej właścicielem (User#id) jako klucza podstawowego również dla tego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NodeJS:Gdzie połączyć się z bazą danych w kodzie?

  2. Sequelize:Error:Error:Table1 nie jest powiązana z Table2

  3. Jak wykonać zapytanie o soundex() w mysql

  4. Jak uzyskać id ostatniego wstawionego wiersza za pomocą przygotowanego zestawienia?

  5. Jak powiązać tabelę danych ze środowiskiem wykonawczym przeglądarki raportów