Php Symfony2延迟加载不';行不通
我在symfony2/doctrine2中遇到延迟加载问题。 我有一个普通对象(例如:type item),这个对象有一个id。如果我在运行时查看这个对象,我会看到id被设置了。图标和金额等其他参数均为空。我知道,这就是延迟加载的工作原理,但是当我调用getters(getIcon)时,什么都没有发生。图标属性仍然为空。我还尝试调用uuu load方法,但没有任何帮助 对不起,忘记密码了Php Symfony2延迟加载不';行不通,php,symfony,doctrine-orm,lazy-loading,Php,Symfony,Doctrine Orm,Lazy Loading,我在symfony2/doctrine2中遇到延迟加载问题。 我有一个普通对象(例如:type item),这个对象有一个id。如果我在运行时查看这个对象,我会看到id被设置了。图标和金额等其他参数均为空。我知道,这就是延迟加载的工作原理,但是当我调用getters(getIcon)时,什么都没有发生。图标属性仍然为空。我还尝试调用uuu load方法,但没有任何帮助 对不起,忘记密码了 class Character { /** * @ORM\Column(type="integer
class Character {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="Entity\Item", mappedBy="character")
*/
protected $item;
/*********************************************************************
* Custom methods
*/
public function getItem() {
return $this->item;
}
}
这就是延迟加载不起作用的对象
class Item {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="integer")
*/
protected $amount;
/**
* @ORM\Column(type="string")
*/
protected $icon;
}
编辑2:
字符类的构造函数
public function __construct()
{
$this->item = new \Doctrine\Common\Collections\ArrayCollection();
}
因此,previos对您的初始帖子的评论所指的是,您需要在项目实体中实现一个manytone关系,以使所有内容正常工作 在您的字符实体中,有以下代码行
/**
* @ORM\OneToMany(targetEntity="Entity\Item", mappedBy="character")
*/
protected $item;
这表示您与映射属性“character”中关系的实体项存在关系。在该属性中存储关系。如果查看数据库,将找不到任何存储的关系,因为类项没有描述的映射属性字符。正如gp_sflover所指出的,一对一的关系需要是双向的,而“拥有”一方需要一对多的关系。因此,您要做的是,将以下代码添加到您的项目实体中
/**
* @ORM\ManyToOne(targetEntity="Entity\Character", inversedBy="item")
*/
protected $character;
inversedBy属性创建双向关系。如果没有此语句,您将无法从角色实体加载getItems
如果更改了代码,则必须更新数据库并还原元素。在这之后,一切都会好起来。你能给我们看一些代码吗?对不起。我更新了我的帖子。如果您需要一些特定的信息,请告诉我项目实体中的字符在哪里?我有一个字符对象,并将getItem作为项目对象。直到现在一切都很好。对item对象的每次调用都无效OneToMany关系是“new ArrayCollection();”在构造函数中?