Php 避免延迟加载原则Symfony2
我的项目中有两个实体:用户和化身 用户拥有具有一对一关系的化身 化身是具有文件对象和文件名的实体。它使用@ORM\HasLifecycleCallbacks来保存文件或删除文件,如中所述 在我的控制器中,我想从当前用户中删除化身实体(我使用Php 避免延迟加载原则Symfony2,php,symfony,doctrine-orm,doctrine,lazy-loading,Php,Symfony,Doctrine Orm,Doctrine,Lazy Loading,我的项目中有两个实体:用户和化身 用户拥有具有一对一关系的化身 化身是具有文件对象和文件名的实体。它使用@ORM\HasLifecycleCallbacks来保存文件或删除文件,如中所述 在我的控制器中,我想从当前用户中删除化身实体(我使用$user=$this->get('security.context')->getToken()->getUser()),但我无法使用$user->getAvatar()访问化身: 但如果我尝试访问化身的文件名,它会返回: $filename = $user-
$user=$this->get('security.context')->getToken()->getUser()
),但我无法使用$user->getAvatar()
访问化身:
但如果我尝试访问化身的文件名,它会返回:
$filename = $user->getAvatar()->getFileName();
var_dump($user->getAvatar());
object(AppBundle\Entity\Avatar)
private 'id' => int 20
public 'file' => null
private 'fileName' => string 'myfile.png'
如何获取与我的用户相关联的化身?如中所述,您只需指定抓取行为即可
/**
* @OneToOne(targetEntity="User", fetch="EAGER")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
请参阅YAML或其他配置示例的文档。非常感谢您,mutch,我已经搜索了几个小时了!(是“渴望”,“渴望”抛出一个解释)在查询期间更改获取模式只能用于一对一和多对一关系。对于ref:I必须将
fetch
参数放在@OneToOne
注释中,才能在Symfony 2.8条令/ORM 2下工作。5@Anonymous:请注意关于fetch
属性的放置。我不知道,但它似乎与文档一致。作为这篇文章的作者,我认为如果你认为编辑是正确的,你仍然可以接受它。@NisseEngström:谢谢。我不知道为什么我的编辑被其他两位评论员拒绝了,没有它,这个答案是完全错误的,但非常接近正确。再次建议编辑会是一种不好的形式吗?有关有效的注释定义及其有效属性,请参见:和。
/**
* @OneToOne(targetEntity="User", fetch="EAGER")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/