小编Rau*_*aul的帖子

原则2,原生查询

我正在尝试使用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进行正常查询?..我变得疯了..

谢谢

native doctrine-orm

8
推荐指数
1
解决办法
2万
查看次数

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)

doctrine-orm

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

doctrine-orm ×2

native ×1