关于 php:如何使用 queryBuilder 从数据库中删除?

How to delete from database with queryBuilder?

我想删除一些数据并返回删除的编号。
这是我的代码:

1
2
3
4
5
6
7
8
public function deleteMyData() : ?int
{
    $qb = $this->connection->createQueryBuilder()
        ->delete('myTable')
        ->where('pays ="us"')
    ;
    return $qb->execute()->rowCount();
}

我已经测试了其他的东西,比如:

1
2
3
->delete()
->from('myTable')
->where('pays ="fr"')

当我运行我的代码时,我遇到了这个错误:

[Symfony\\Component\\Debug\\Exception\\FatalThrowableError]

Call to a member function rowCount() on integer

我转储了 $qb->execute()->rowCount(),它返回 "0"。

感谢您的帮助!

PS:我认为问题不在于查询,因为:

Error An exception occurred while executing 'DELETE FROM theQueryTest WHERE pays ="us"':

SQL 很棒

PS 2:我不能使用 ->getQuery()

enter


我找到了解决方案

就我而言,我必须使用 $this->connection 但是我不必使用 $qb->execute()

我阅读了文档并在 Connection.php (->delete(...)) 中找到了这个:

  • @return integer The number of affected rows.

所以我要直接使用$this->connection->delete(...)

1
2
3
4
5
6
7
public function deleteMyData() : ?int
{
    $qb = $this->connection
        ->delete('myTable', ['pays' => '"us"'])
    ;
    return $qb;
}

此代码返回一个整数

1
return $qb->execute();

如果你想计算受影响的行数试试这个:

1
2
3
$qb = $this->createQueryBuilder();
//query
$count = $qb->getQuery()->getSingleScalarResult();