0

我试图在数据库表中插入一条新记录,而不是不断替换表中的记录。(目前我在这个表中有一条记录)。任何想法为什么?这是我的查询:

public function setExperimentData($name, $type, $description) {
    $updateQuery = $this->repository->createQueryBuilder('ud')
        ->update()
        ->set('ud.name', $this->em->createQueryBuilder()->expr()->literal($name))
        ->set('ud.type', $this->em->createQueryBuilder()->expr()->literal($type))
        ->set('ud.description', $this->em->createQueryBuilder()->expr()->literal($description))                                      
        ->getQuery();
    $updateQuery->execute();
}  

是的,我尝试了以下方法(Experiments() 是实体):

$experiment = new Experiments();
$experiment->setName($experimentName);        
$experiment->setDescription($experimentDescription);
$experiment->setPrimaryinvestigator($primaryInvestigator);

然后我收到以下错误:

可捕获的致命错误:传递给 Test\HelloBundle\Entity\Experiments::setPrimaryinvestigator() 的参数 1 必须是 Test\HelloBundle\Entity\Users 的实例

这是我在实体类中为主要调查员设置的设置器:

public function setPrimaryinvestigator(\Test\HelloBundle\Entity\Users $primaryinvestigator = null)
    {
        $this->primaryinvestigator = $primaryinvestigator;

        return $this;
    }

我究竟做错了什么?

更新:

它是一个整数传递。E,g, 1 是 PrimaryInvestigator 的 id。

4

1 回答 1

1

我认为 QueryBuilder 目前不支持插入查询。假设您有一个带有设置器的 Experiment 实体,您是否尝试过

public function setExperimentData($name, $type, $description) {
    $em = $this->getDoctrine()->getManager();
    $experiment = new Experiment();
    $experiment->setName($name);
    $experiment->setType($type);
    $experiment->setDescription($description);
    $em->persist($experiment);
    $em->flush();
}  
于 2013-08-20T09:17:20.787 回答