Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 删除ID最低的条目_Mysql_Doctrine Orm_Symfony - Fatal编程技术网

Mysql 删除ID最低的条目

Mysql 删除ID最低的条目,mysql,doctrine-orm,symfony,Mysql,Doctrine Orm,Symfony,我只想删除ID最低的行 我正在尝试这个: $query = 'DELETE FROM PATH\TO\ENTITY ORDER BY id ASC LIMIT 1'; $query = $this->entityManager->createQuery($query); $query->execute(); 得到这个错误: [语法错误]第0行,第53列:错误:应为字符串结尾,获取“BY” 也许我用错了方法。 有没有建议如何在一次数据库调用中删除id最低的条目

我只想删除ID最低的行

我正在尝试这个:

$query = 'DELETE FROM PATH\TO\ENTITY ORDER BY id ASC LIMIT 1';
$query = $this->entityManager->createQuery($query);
$query->execute();         
得到这个错误:

[语法错误]第0行,第53列:错误:应为字符串结尾,获取“BY”

也许我用错了方法。 有没有建议如何在一次数据库调用中删除id最低的条目

$query = 'DELETE FROM table ORDER BY id ASC LIMIT 1';
$stmt = $this->entityManager->getConnection()->prepare($query);
$stmt->execute();
无法从entityManager中删除或更新。首先,您必须从存储库中选择/查找实体,然后将其删除。我的建议适用于原始SQL查询


无法从entityManager中删除或更新。首先,您必须从存储库中选择/查找实体,然后将其删除。我的建议适用于原始SQL查询。

在使用DQL时为实体定义一个别名。见:

$query=$this->entityManager->createQuery('SELECT e FROM MyEntity e ORDER BY e.id ASC');
$query->setMaxResults(1);//限制1
$entities=$query->getResult();
如果(计数($entities)>0){
$query=$this->entityManager->createQuery('DELETE FROM MyEntity e WHERE e.id=:identifier');
$query->setParameter(“标识符”,$entities[0]->getId());
$query->execute();
}
将entityAlias替换为实体类名称的第一个字母,这是原则中最常见的做法

//编辑-如@Timurib所述,DQL不知道限制。应该用的


//DELETE语句不支持Edit2-As ORDER BY,只支持WHERE子句。我们现在使用另一个查询在删除之前返回标识符。请参见使用DQL时为实体定义别名。见:

$query=$this->entityManager->createQuery('SELECT e FROM MyEntity e ORDER BY e.id ASC');
$query->setMaxResults(1);//限制1
$entities=$query->getResult();
如果(计数($entities)>0){
$query=$this->entityManager->createQuery('DELETE FROM MyEntity e WHERE e.id=:identifier');
$query->setParameter(“标识符”,$entities[0]->getId());
$query->execute();
}
将entityAlias替换为实体类名称的第一个字母,这是原则中最常见的做法

//编辑-如@Timurib所述,DQL不知道限制。应该用的


//DELETE语句不支持Edit2-As ORDER BY,只支持WHERE子句。我们现在使用另一个查询在删除之前返回标识符。请参见

正如Kwido所说,您错过了实体别名。但是查询仍然无法执行

首先,DQL不支持
LIMIT
表达式。它是MySQL特有的特性,不是ANSI SQL。其他平台驱动程序有自己的这种行为的实现,它们都由公共接口提供:of
Query
object

其次,DQL不支持带有排序依据子句的
DELETE
(参见语言)。它也是非标准特性,但不能用于其他驱动程序,所以条令不允许它


如果需要执行此查询,则必须使用本机SQL。

正如Kwido所说,您缺少实体别名。但是查询仍然无法执行

首先,DQL不支持
LIMIT
表达式。它是MySQL特有的特性,不是ANSI SQL。其他平台驱动程序有自己的这种行为的实现,它们都由公共接口提供:of
Query
object

其次,DQL不支持带有排序依据子句的
DELETE
(参见语言)。它也是非标准特性,但不能用于其他驱动程序,所以条令不允许它


如果需要执行此查询,则必须使用本机SQL。

好的,听起来不错。因为如果我试图通过本机SQL删除条目,它会工作。我不确定DQL不支持按顺序删除。谢谢好的,听起来不错。因为如果我试图通过本机SQL删除条目,它会工作。我不确定DQL不支持按顺序删除。谢谢Thx,但此查询无法执行。我得到了一个语法错误,可能是因为“orderby”@splot像Timurib的回答说DELETE不支持“orderby”子句,而只支持“WHERE”子句。将更新我的答案。@Sploat-更新了答案,使用select查询来获取第一个ID,而不是使用ORDER BY,这在DQL Delete语句中不受支持,正如Timurib在其答案.Thx中所述,但此查询无法执行。我得到了一个语法错误,可能是因为“orderby”@splot像Timurib的回答说DELETE不支持“orderby”子句,而只支持“WHERE”子句。将更新我的答案。@Sploat-更新答案,使用select查询获取第一个ID,而不是使用ORDER BY,正如Timurib在其答案中所述,DQL Delete语句不支持ORDER BY。是的,原始sql当然起作用。但我只是想避免使用原始sql。无论如何,Thx。是的,原始sql当然可以工作。但我只是想避免使用原始sql。反正是Thx。