2

ProfileContact と Profile の 2 つのエンティティがあります。それらの間に関連があります。

class ProfileContact {

    /**
     * @var integer $profileContactId
     *
     * @ORM\Column(name="profile_contact_id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $profileContactId;

    /**
     * @var text $description
     *
     * @ORM\Column(name="description", type="text", 
     * nullable=true)
     */
    private $description;

    /**
     * @var Profile
     *
     * @ORM\ManyToOne(targetEntity="Profile")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="profile_id", 
     * nullable=false, 
     * onDelete="CASCADE", referencedColumnName="profile_id")
     * })
     */
    private $profile;
}

.

class Profile {

    /**
     * @var integer $profileId
     *
     * @ORM\Column(name="profile_id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $profileId;
}

もちろん、適切なセッターとゲッターがあります。

ProfileContact エンティティを作成して保持し、既存のプロファイルに関連付けるが、D2 によって以前にフェッチされないようにするにはどうすればよいですか? Profile エンティティ全体をデータベースに要求したくありません。

    $profile = $this->getProfileRepository()->find(2);  //I want to avoid this
    $item = new \Alden\BonBundle\Entity\ProfileContact();
    $item->setProfile($profile);
    $item->setDescription('abc');
    $em = $this->getEntityManager();
    $em->persist($item);
    $em->flush();
4

1 に答える 1

2

これを試して

$item->setProfile($em->getReference('Profile', 2));
于 2012-06-01T10:15:01.493 に答える