Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 避免延迟加载原则Symfony2_Php_Symfony_Doctrine Orm_Doctrine_Lazy Loading - Fatal编程技术网

Php 避免延迟加载原则Symfony2

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-

我的项目中有两个实体:用户和化身

用户拥有具有一对一关系的化身

化身是具有文件对象和文件名的实体。它使用@ORM\HasLifecycleCallbacks来保存文件或删除文件,如中所述

在我的控制器中,我想从当前用户中删除化身实体(我使用
$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")
 */