我正在尝试使用Doctrine 2进行本机查询..但我不能让它工作..
$q = "SELECT * FROM user_recent_activity WHERE id = {$user->id}";
$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
$query = $this->_em->createNativeQuery($q, $rsm);
$result = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
这是返回空数组..我不确定它是如何工作的"ResultSetMapping",但我不能用这个查询映射,就像我在doctrine网站的例子中看到的那样,因为user_recent_activity它不是一个表,它是一个像这个:
id user_id type created_at
12 5 opinion 2011-02-22 23:29:00
2 2 vote 2011-01-30 14:16:51
Run Code Online (Sandbox Code Playgroud)
id代表不同的对象,所以,不是外键..
那么,是否可以对Doctrine 2进行正常查询?..我变得疯了..
谢谢
我想做一些非常简单的事情......但是我做错了,我不知道是什么问题.我正在尝试使用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;
} …Run Code Online (Sandbox Code Playgroud)