Symfony 2 - Doctrine 2 - Native Sql - 删除查询

Pim*_*Web 8 php sql database symfony doctrine-orm

而不是逐个删除我的实体

$this->em->remove($price);
Run Code Online (Sandbox Code Playgroud)

我想执行本机SQL查询来删除我的所有实体.

这是我尝试过的:

$sqlQuery = "delete from mytable where mytable.fieldone_id = ".$fieldoneid." and mytable.fieldtwo_id = ".$fieldtwoid.";";

$query = $this->getEntityManager()->createNativeQuery($sqlQuery);

$query->execute();
Run Code Online (Sandbox Code Playgroud)

它返回以下错误:

Catchable fatal error: Argument 2 passed to Doctrine\ORM\EntityManager::createNativeQuery() must be an instance of Doctrine\ORM\Query\ResultSetMapping, none given
Run Code Online (Sandbox Code Playgroud)

它希望我传递一个ResultSetMapping,但它是一个删除查询...

谁能请教我怎么做?

Seh*_*ael 19

在我看来,我使用一种更简单的执行本机SQL查询的方式.尝试这样的事情(我也使用PDO方法在查询中包含变量,这更安全):

$sql = "delete from mytable where mytable.fieldone_id = :fieldoneid and mytable.fieldtwo_id = :fieldtwoid";
$params = array('fieldoneid'=>$fieldoneid, 'fieldtwoid'=>$fieldtwoid);

$em = $this->getDoctrine()->getManager();
$stmt = $em->getConnection()->prepare($sql);
$stmt->execute($params);
// if you are doing a select query, fetch the results like this:
// $result = $stmt->fetchAll();
Run Code Online (Sandbox Code Playgroud)

这对我很有用,希望它有所帮助