gpt4 book ai didi

doctrine-orm - 原则 2 - 在数据库中插入新项目

转载 作者:行者123 更新时间:2023-12-04 23:30:59 26 4
gpt4 key购买 nike

我试图让事情变得非常简单..但我做错了,我不知道问题出在哪里。只是我正在尝试使用 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();

正如你所看到的..很简单,但是,给我下一个错误:
Error: Message: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null

显然,如果我在 $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;
}

任何人都可以想象这是什么问题? ..我不知道还有什么尝试..谢谢

最佳答案

我认为 beberlei 所说的是,在您最喜欢的书实体中,您不需要将 user_id 和 book_id 定义为类属性,b/c 您设置的 book 和 user 属性已经将它们识别为相关的连接列。此外,您尝试保留 favouriteBook 实体失败,因为您需要在 favouriteBook 实体中设置书籍和用户实体关联,而不是外键。所以它会是:

$favouriteBook = new UserFavouriteBook;
$favouriteBook->book = $book;
$favouriteBook->user = $user;
$favouriteBook->created_at = new DateTime("now");

$this->_em->persist($favouriteBook);
$this->_em->flush();

关于doctrine-orm - 原则 2 - 在数据库中插入新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com