正如@apfelbox 所解释的......现在没有修复它。
我结合唯一键选择了 OneToMany 解决方案:
User.php
/**
* @ORM\OneToMany(targetEntity="TB\UserBundle\Entity\Settings", fetch="EXTRA_LAZY", mappedBy="user", cascade={"all"})
*/
protected $settings;
/**
* @return \Doctrine\Common\Collections\Collection
*/
public function getSettings()
{
return $this->settings;
}
和
Settings.php
/**
* @ORM\ManyToOne(targetEntity="TB\UserBundle\Entity\User", fetch="EXTRA_LAZY", inversedBy="settings")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
protected $user;
并确保 Settings.php 中的唯一性包括:
use Doctrine\ORM\Mapping\UniqueConstraint;
并添加唯一索引
/**
* @ORM\Entity
* @ORM\Table(name="user_settings", uniqueConstraints={@UniqueConstraint(name="user", columns={"user_id"})})
*/
class Settings
因此,当我想访问用户设置时,我只需要这样做(仅在该特定时刻触发一个查询)
$_settings = $user->getSettings()->current();
我认为是最干净的解决方案。