是否可以使用 createQueryBuilder 进行插入/更新?如果没有,我应该使用什么功能? [英] Is there possible to use createQueryBuilder for insert/update? If not, what function should I use?

查看:28
本文介绍了是否可以使用 createQueryBuilder 进行插入/更新?如果没有,我应该使用什么功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在我成功地创建了一个函数,该函数使用 Doctrine 的函数 createQueryBuilder 从数据库中检索数据.

For now I succeded to create a function that retrieves data from the database using Doctrine's function createQueryBuilder.

有谁知道有没有类似的插入或更新数据库的函数?或者我如何使用 createQueryBuilder?

Does anybody know if there is a similar function to insert or update the database? Or how can i use createQueryBuilder?

推荐答案

Doctrine 2 ORM 不支持 INSERT 通过 DQLDQL 查询构建器.有关完整的语法,请查看 EBNFDQL.

Doctrine 2 ORM does not support INSERT via DQL or the DQL query builder. For a complete syntax, check the EBNF of DQL.

要在 ORM 中处理插入,您总是手动实例化一个实体并将其保存在实体管理器中:

To handle inserts in ORM, you always manually instantiate an entity and persist it with the entity manager:

$user = new MyEntityUser();

$entityManager->persist($user);
$entityManager->flush();

你只能在 Doctrine ORM 中通过 DQL 处理 SELECTUPDATEDELETE:

You can only handle SELECT, UPDATE and DELETE via DQL in Doctrine ORM:

  • 选择:

SELECT u FROM MyEntityUser u WHERE u.id = :userId

  • 更新:

  • Update:

    UPDATE MyEntityUser u SET u.status = 'banned' WHERE u.id = :userId
    

  • 删除

  • Delete

    DELETE MyEntityUser u WHERE u.id = :userId
    

  • 您也可以使用 QueryBuilder 处理这些操作:

    You can handle these operations with the QueryBuilder as well:

    • 选择:
        $queryBuilder = $entityManager->createQueryBuilder();
        $queryBuilder
            ->select('u')
            ->from('MyEntityUser', 'u')
            ->where($queryBuilder->expr()->eq('u.id', ':userId'));
    

    • 删除:
    •     $queryBuilder = $entityManager->createQueryBuilder();
          $queryBuilder
              ->delete('MyEntityUser', 'u')
              ->where($queryBuilder->expr()->eq('u.id', ':userId'));
      

      • 更新:
      •     $queryBuilder = $entityManager->createQueryBuilder();
            $queryBuilder
                ->update('MyEntityUser', 'u')
                ->set('u.status', 'banned')
                ->where($queryBuilder->expr()->eq('u.id', ':userId'));
        

        这篇关于是否可以使用 createQueryBuilder 进行插入/更新?如果没有,我应该使用什么功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    相关文章
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆