sql >> Databáze >  >> RDS >> Mysql

Nezdá se, že by kaskáda Doctrine2.3 a OneToOne fungovala

Ok našel řešení:

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

    ...
}

Nejprve jsem musel specifikovat mappedBy a inversedBy (což jsem již dříve zkoušel, ale ve špatném směru - mappedBy na straně vlastníka, inversedBy na opačné straně). Také jsem si myslel, že inverzní strana nemusí mít samostatné id a zkusil jsem použít id vlastnící strany (User#id) jako primární klíč i pro tuto.



  1. Skalární vkládání UDF v SQL Server 2019

  2. vložte datum do databáze mysql

  3. SQL Server:Nahraďte neplatné znaky XML z pole VARCHAR(MAX).

  4. Laravel:Získejte objekt z kolekce podle atributu