我想做一些非常简单的事情......但是我做错了,我不知道是什么问题.我正在尝试使用Doctrine 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();
Run Code Online (Sandbox Code Playgroud)
正如你所看到的......非常简单,但那,给我下一个错误:
Error: Message: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null
Run Code Online (Sandbox Code Playgroud)
显而易见,如果我在$ favouriteBook的"persist"和"flush"之前进行"转储",那么看起来都是正确的..
这是我的"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;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以想象出问题是什么?..我不知道还有什么尝试..谢谢
我认为beberlei所说的是,在您的favouriteBook实体中,您不需要将user_id和book_id定义为类属性,b/c您已设置的书籍和用户属性已将这些属性识别为相关的连接列.此外,您尝试持久保存favouriteBook实体失败,因为您需要在favouriteBook实体中设置book和user实体关联,而不是外键.所以它会是:
$favouriteBook = new UserFavouriteBook;
$favouriteBook->book = $book;
$favouriteBook->user = $user;
$favouriteBook->created_at = new DateTime("now");
$this->_em->persist($favouriteBook);
$this->_em->flush();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19698 次 |
| 最近记录: |