我有一个多对一关联映射,许多考试有一个科 如果我要更新标记 我用主义那里条件多对一
Update namespace/Exam e set e.marks = 4 where e.subject.id = xxxx
它与考试编号XXXX所有学科的性质没有工作 你能请他 帮助我以正确的方式做到这一点?
我有一个多对一关联映射,许多考试有一个科 如果我要更新标记 我用主义那里条件多对一
Update namespace/Exam e set e.marks = 4 where e.subject.id = xxxx
它与考试编号XXXX所有学科的性质没有工作 你能请他 帮助我以正确的方式做到这一点?
如果在查询中没有加入,则无法访问e.subject.id
。但是在Doctrine更新语句中,由于其特定的MySQL,联接是不可能的。
什么工作,应该是比较全的实体:
$subject = $this->getEntityManager()->getRepository('namespace\subject')
->find(xxx);
$query = $this->getEntityManager()->createQueryBuilder()
->update('namespace\Exam', 'e')
->set('e.marks', '4')
->where('e.subject = :subject')
->setParameter('subject', $subject);
或者,如果你不希望有其他数据库查询与被摄物的实体的主键仅包含一列(如id
),你也可以用这个主键比较:
$query = $this->getEntityManager()->createQueryBuilder()
->update('namespace\Exam', 'e')
->set('e.marks', '4')
->where('e.subject = :id')
->setParameter('id', xxx);
也看看this question,用户无法在他的更新语句加入了。
编辑:增加了更多的一般的方法
什么你想知道吗?你的问题是什么?? – 2014-09-06 07:56:57
嗨,我更新了关于你的第二个问题的答案。这是你的意思吗?如果它对你有帮助,你可以接受答案是正确的;-) – SBH 2014-09-09 17:37:48