예제 #1
0
 public function testMassDelete()
 {
     $this->queryHelper = $this->getMockBuilder(QueryHelper::class)->setMethods(['buildDeleteQuery'])->setConstructorArgs([$this->connection, new ArrayCache()])->getMock();
     $qb = $this->getMockBuilder(QueryBuilder::class)->disableOriginalConstructor()->getMock();
     $qb->expects($this->once())->method('execute')->willReturn(29);
     $this->queryHelper->expects($this->once())->method('buildDeleteQuery')->with('test_table', ['whereColumn' => 'x'])->willReturn($qb);
     $rows = $this->queryHelper->massDelete('test_table', ['whereColumn' => 'x']);
     $this->assertEquals(29, $rows);
 }
예제 #2
0
 /**
  * Deletes all objects by id
  *
  * @param DataObjectInterface[] $objects
  * @return int Number of db rows effected
  */
 public function deleteAll(array $objects)
 {
     if (empty($objects)) {
         return 0;
     }
     foreach ($objects as $object) {
         $this->checkArgument($object);
         $this->dispatchEvents('beforeDelete', $object);
     }
     $columns = $this->queryHelper->getDbColumns($objects[0]->getTableName());
     $ids = DataObject::getIds($objects);
     if (isset($columns['isDeleted'])) {
         $rows = $this->queryHelper->massUpdate($this->getTableName(), ['isDeleted' => 1], ['id' => $ids]);
     } else {
         $rows = $this->queryHelper->massDelete($this->getTableName(), ['id' => $ids]);
     }
     foreach ($objects as $object) {
         $object->setDeleted(true);
         $this->dispatchEvents('afterDelete', $object);
     }
     return $rows;
 }