我有一個多對一關聯映射,許多考試有一個科 如果我要更新標記 我用主義那裏條件多對一
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