删除数据.delete

Testing Is Documentation

tests/Database/Delete/DeleteTest.php删除数据.delete - 图1

Uses

  1. <?php
  2. use Leevel\Database\Condition;
  3. use Tests\Database\DatabaseTestCase as TestCase;

delete 基本用法

删除成功后,返回影响行数。

  1. public function testBaseUse(): void
  2. {
  3. $connect = $this->createDatabaseConnectMock();
  4. $sql = <<<'eot'
  5. [
  6. "DELETE FROM `test_query` WHERE `test_query`.`id` = :test_query_id ORDER BY `test_query`.`id` DESC LIMIT 1",
  7. {
  8. "test_query_id": [
  9. 1
  10. ]
  11. },
  12. false
  13. ]
  14. eot;
  15. $this->assertSame(
  16. $sql,
  17. $this->varJson(
  18. $connect
  19. ->sql()
  20. ->table('test_query')
  21. ->where('id', 1)
  22. ->limit(1)
  23. ->orderBy('id desc')
  24. ->delete()
  25. )
  26. );
  27. }

delete 不带条件的删除

删除成功后,返回影响行数。

  1. public function testWithoutCondition(): void
  2. {
  3. $connect = $this->createDatabaseConnectMock();
  4. $sql = <<<'eot'
  5. [
  6. "DELETE FROM `test_query`",
  7. [],
  8. false
  9. ]
  10. eot;
  11. $this->assertSame(
  12. $sql,
  13. $this->varJson(
  14. $connect
  15. ->sql()
  16. ->table('test_query')
  17. ->delete()
  18. )
  19. );
  20. }

delete.join 连表删除

  1. public function testJoin(): void
  2. {
  3. $connect = $this->createDatabaseConnectMock();
  4. $sql = <<<'eot'
  5. [
  6. "DELETE t FROM `test_query` `t` INNER JOIN `test_query_subsql` `h` ON `h`.`name` = `t`.`name` WHERE `t`.`id` = :t_id",
  7. {
  8. "t_id": [
  9. 1
  10. ]
  11. },
  12. false
  13. ]
  14. eot;
  15. $this->assertSame(
  16. $sql,
  17. $this->varJson(
  18. $connect
  19. ->sql()
  20. ->table('test_query as t')
  21. ->innerJoin(['h' => 'test_query_subsql'], [], 'name', '=', Condition::raw('[t.name]'))
  22. ->where('id', 1)
  23. ->limit(1)
  24. ->orderBy('id desc')
  25. ->delete()
  26. )
  27. );
  28. }