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

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

问题描述

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



有人知道是否有类似的功能插入或更新数据库?或者我如何使用createQueryBuilder?

解决方案

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



要处理ORM中的插入,您始终会手动实例化一个实体并将其与实体管理器保持一致:

  $ user = new \My\Entity\User(); 

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

您只能处理 SELECT 更新 DELETE 通过DQL in Doctrine ORM:




  • 选择:

      SELECT u FROM My\Entity\User u WHERE u.id = :userId 


  • 更新:

     更新My\Entity\User u SET u.status ='banned'WHERE u.id =:userId 


  • 删除

     删除My\Entity\User你WHERE u.id =:userId 




你可以使用QueryBuilder处理这些操作:




  • 选择:





  $ queryBuilder = $ entityManager-> createQueryBuilder(); 
$ queryBuilder
- > select('u')
- > from('My\Entity\User','u')
- > where ($ queryBuilder-> expr() - > eq('u.id',':userId'));




  • 删除:





  $ queryBuilder = $ entityManager-> createQueryBuilder(); 
$ queryBuilder
- > delete('My\Entity\User','u')
- >其中($ queryBuilder-> expr() - > eq ('u.id',':userId'));




  • 更新:





  $ queryBuilder = $ entityManager-> createQueryBuilder(); 
$ queryBuilder
- > update('My\Entity\User','u')
- > set('u.status','banned')
- > where($ queryBuilder-> expr() - > eq('u.id',':userId'));


For now I succeded to create a function that retrieves data from the database using Doctrine's function 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 does not support INSERT via DQL or the DQL query builder. For a complete syntax, check the EBNF of DQL.

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

$user = new \My\Entity\User();

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

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

  • Select:

    SELECT u FROM My\Entity\User u WHERE u.id = :userId
    

  • Update:

    UPDATE My\Entity\User u SET u.status = 'banned' WHERE u.id = :userId
    

  • Delete

    DELETE My\Entity\User u WHERE u.id = :userId
    

You can handle these operations with the QueryBuilder as well:

  • Select:

    $queryBuilder = $entityManager->createQueryBuilder();
    $queryBuilder
        ->select('u')
        ->from('My\Entity\User', 'u')
        ->where($queryBuilder->expr()->eq('u.id', ':userId'));

  • Delete:

    $queryBuilder = $entityManager->createQueryBuilder();
    $queryBuilder
        ->delete('My\Entity\User', 'u')
        ->where($queryBuilder->expr()->eq('u.id', ':userId'));

  • Update:

    $queryBuilder = $entityManager->createQueryBuilder();
    $queryBuilder
        ->update('My\Entity\User', 'u')
        ->set('u.status', 'banned')
        ->where($queryBuilder->expr()->eq('u.id', ':userId'));

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

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