Tôi có hai entites (User và UserPreferences) mà tôi muốn ánh xạ OneToOne một chiều.Doctrine2.3 và OneToOne thác liên tục dường như không hoạt động
Mã này trông giống như sau:
/**
* @ORM\Table("users")
* @ORM\Entity
*/
class User
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
*/
protected $id;
...
/**
* @ORM\Column(name="user_preferences_id", type="integer")
* @ORM\OneToOne
* (
* targetEntity="UserPreferences",
* cascade={"persist"}
*)
*/
protected $userPreferences;
public function __construct() {
$this->userPreferences = new UserPreferences();
}
}
/**
* @ORM\Table("user_preferences")
* @ORM\Entity
*/
class UserPreferences extends UserPreferencesEntity
{
/**
* @ORM\Id
* @ORM\Column(name="user_id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
...
}
Bây giờ khi một người dùng mới được tạo ra, userPreferences được khởi tạo với một UserPreferences mới phản đối. Khi cố gắng để tồn tại user
, Doctrine ném một ngoại lệ, tuyên bố
A new entity was found through the relationship '...\Entity\User#userPreferences' that was not configured to cascade persist operations for entity: ...\Entity\[email protected] To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}).
Nhưng điều gì khác tôi nên làm gì? User userPreferences của người dùng được cấu hình để xếp hàng tồn tại nhưng không. Tôi nhận được một cái gì đó sai ở đây?
Bạn đã thử nó mà không có thuộc tính chú thích đó chưa? – Flosculus
Nếu không có thuộc tính chú thích nào? – dwalldorf