use*_*442 13 insert-update createquery symfony doctrine-orm
现在我成功地创建了一个使用Doctrine函数createQueryBuilder从数据库中检索数据的函数.
有人知道是否有类似的功能来插入或更新数据库?或者我如何使用createQueryBuilder?
Ocr*_*ius 29
Doctrine 2 ORM不支持INSERT通过DQL或DQL查询构建器.有关完整语法,请检查DQL的EBNF.
要在ORM中处理插入,您始终手动实例化实体并使用实体管理器将其保留:
$user = new \My\Entity\User();
$entityManager->persist($user);
$entityManager->flush();
Run Code Online (Sandbox Code Playgroud)
你只能处理SELECT,UPDATE并DELETE通过DQL教义ORM:
选择:
SELECT u FROM My\Entity\User u WHERE u.id = :userId
Run Code Online (Sandbox Code Playgroud)更新:
UPDATE My\Entity\User u SET u.status = 'banned' WHERE u.id = :userId
Run Code Online (Sandbox Code Playgroud)删除
DELETE My\Entity\User u WHERE u.id = :userId
Run Code Online (Sandbox Code Playgroud)您也可以使用QueryBuilder处理这些操作:
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->select('u')
->from('My\Entity\User', 'u')
->where($queryBuilder->expr()->eq('u.id', ':userId'));
Run Code Online (Sandbox Code Playgroud)
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->delete('My\Entity\User', 'u')
->where($queryBuilder->expr()->eq('u.id', ':userId'));
Run Code Online (Sandbox Code Playgroud)
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->update('My\Entity\User', 'u')
->set('u.status', 'banned')
->where($queryBuilder->expr()->eq('u.id', ':userId'));
Run Code Online (Sandbox Code Playgroud)
如果使用 DBAL queryBuilder,则可以插入。
$qb = $connection->createQueryBuilder();
Run Code Online (Sandbox Code Playgroud)
使用 queryBuilder 插入它是这样的:
$qb->insert('MuBundle:MyClass', 'momc')
->values (array(
'property1 (id for example)' => '?'
'property2 (name for exmaple)' => '?'
))
->setParameter(0, $id)
->setparameter(1, $name)
Run Code Online (Sandbox Code Playgroud)
您使用QueryBuilder的另一个选择是使用Doctrine DBAL准备和执行函数.可能不像使用QueryBuilder那样灵活,但是在某些情况下INSERT可能很有用.
使用方法是从实体管理器获取数据库连接.
$sql = "INSERT INTO table (field1, field2) VALUES ('foo', 'var')";
$stmt = $em->getConnection()->prepare($sql);
$stmt->bindValue(':invoice', $invoiceId);
$result = $stmt->execute();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37428 次 |
| 最近记录: |