是否可以使用createQueryBuilder进行插入/更新?如果没有,我应该使用什么功能? [英] Is there possible to use createQueryBuilder for insert/update? If not, what function should I use?
问题描述
有人知道是否有类似的功能插入或更新数据库?或者我如何使用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屋!