我使用的是Doctrine 2.5.0,我对它很新。
我想知道为什么属性和关联的位置会影响实体的保存。
我有一个具有一些属性和一些关联的实体。我最近在至少3个不同的实体上注意到这一点,如果在关联之后放置属性,它将不会在数据库中更新(使用merge和flush)。
因此,在下面的实体中,名称和其他属性不会更新。
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="products")
*/
class Product
{
/**
* @ORM\Id
* @ORM\Column(type="integer", length=8)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToOne(targetEntity="Shop")
* @ORM\JoinColumn(name="shopId", referencedColumnName="id")
*/
protected $shop;
/**
* @ORM\Column(type="string", length=255)
*/
protected $name;
/*Some other properties*/
/*Getters and Setters*/
}
但这会得到更新。注意$ name(以及所有其他属性)和$ shop的位置。
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(
* name="products"
* )
*/
class Product
{
/**
* @ORM\Id
* @ORM\Column(type="integer", length=8)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*/
protected $name;
/*ALL other properties*/
/**
* @ORM\OneToOne(targetEntity="Shop")
* @ORM\JoinColumn(name="shopId", referencedColumnName="id")
*/
protected $shop;
/*Getters and Setters*/
}
我想改变位置,因为在我的一个实体中,我注意到只有关联后放置的属性没有在数据库中更新。