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)。また、反転側は別のIDを持つ必要はないと思い、所有側のID(User#id)をこのIDの主キーとして使用しようとしました。



    1. MYSQLでのバルク挿入

    2. SQLiteでテーブルを作成する

    3. レコードを保存するときに特定の列が挿入されていません

    4. MySQL:より高速なIP範囲クエリを作成する方法は? GeoIP