我試圖做一些非常簡單的事情..但我做錯了,我不知道是什麼問題。只是我想新的項目使用Doctrine 2插入到數據庫:學說2 - 在數據庫中插入新項目
$favouriteBook = new UserFavouriteBook;
$favouriteBook->user_id = 5;
$favouriteBook->book_id = 8;
$favouriteBook->created_at = new DateTime("now");
$this->_em->persist($favouriteBook);
$this->_em->flush();
正如你可以看到..很簡單,但是,給我一個錯誤:
Error: Message: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null
Obviosly,如果我做一個「堅持」和$ favouriteBook的「刷新」前「拋售」,一切看起來是正確的..
這是我的「favouriteBook」實體:
/** @Column(type="integer")
* @Id
*/
private $user_id;
/** @Column(type="integer")
* @Id
*/
private $book_id;
/**
* @ManyToOne(targetEntity="Book", inversedBy="usersFavourite")
* @JoinColumn(name="book_id", referencedColumnName="id")
*/
private $book;
/**
* @ManyToOne(targetEntity="User", inversedBy="favouriteBooks")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/** @Column(type="datetime") */
private $created_at;
public function __get($property) {
return $this->$property;
}
public function __set($property, $value) {
$this->$property = $value;
}
任何人都可以想象出什麼問題? ..我不知道還有什麼嘗試..謝謝
是的,你們倆都是對的:) – Raul
@ blacktie24我遇到了同樣的問題,並且有點理解你和berberlei的回答。但是,favouriteBook實體類中的用戶和書籍屬性聲明爲'private',因此它們需要更改爲'public'嗎?另外我不確定這些相關對象是如何填充的,$ book和$ user包含的是什麼? – Sid
@Sid,是的,如果您要直接分配屬性,則必須將屬性更改爲public,而不是像$ favouriteBook-> setBook($ book)那樣使用setter。 $ book和$ user包含什麼並不重要,它們只是favouriteBook實體與之關聯的其他實體。 – blacktie24