12

いくつかの不変フィールドを別のクラスに移動する必要がありますが、毎回すべてのデータをまとめる必要があるため、「結合」を使用したくありません。

同じテーブルにマップされたクラスとしていくつかのエンティティ属性を持つ方法はありますか?

何かのようなもの:

/**
 * @ORM\Entity
 */
class User {
    /**
     * @var int
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    ...

    /**
     * @var Address
     * @ORM\... ??
     */
    protected $address
}

/**
 * @ORM\ValueObject ??
 */
class Address {
    /**
     * @var string
     * @ORM\Column(type="string", name="address_zipcode", length=12)
     */
    protected $zipcode;

    /**
     * @var string
     * @ORM\Column(type="string", name="address_country_iso", length=3)
     */
    protected $countryIso;
    ...
}

テーブル構造は次のようになります。

CREATE TABLE User (
    `id` INT(11) NOT NULL auto_increment,
    `address_zipcode` VARCHAR(12) NOT NULL,
    `address_country_iso` VARCHAR(3) NOT NULL,
    PRIMARY KEY (`id`)
);
4

3 に答える 3

0

結合せずにオブジェクトを保存する場合:

/**
 * @ORM\Column(name="adress", type="object")
 */

テキストフィールドに自動的にシリアライズ/デシリアライズします

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html

そして、保存したいタイプのセッターを追加します

public function setAdress(Address $adress)
{
    $this->adress = $adress;

    return $this;
}

Address クラスには @ORM アノテーションは必要ありません

于 2013-11-06T16:35:10.980 に答える