是否可以使用 createQueryBuilder 进行插入/更新?如果没有,我应该使用什么功能? [英] Is there possible to use createQueryBuilder for insert/update? If not, what function should I use?
问题描述
现在我成功地创建了一个函数,该函数使用 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
通过 DQL 或 DQL 查询构建器.有关完整的语法,请查看 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 处理 SELECT
、UPDATE
和 DELETE
:
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屋!