Skip to content

Commit e598595

Browse files
committed
Implementação do updatePerformer.
1 parent e9820ac commit e598595

File tree

2 files changed

+86
-5
lines changed

2 files changed

+86
-5
lines changed

src/Db/Gateway/DynamicTableGateway.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Zend\Db\TableGateway\TableGateway;
88
use Zend\EntityMapper\Config\Container\Container;
99
use Zend\EntityMapper\Db\Sql\Factory\Select\SelectFactory;
10+
use Zend\EntityMapper\Db\Sql\Performer\DeletePerformer;
1011
use Zend\EntityMapper\Db\Sql\Performer\InsertPerformer;
1112
use Zend\EntityMapper\Db\Sql\Performer\SelectPerformer;
1213
use Zend\EntityMapper\Db\Sql\Performer\UpdatePerformer;
@@ -170,4 +171,34 @@ public function update($object)
170171
return $response[0];
171172
}
172173

174+
/**
175+
* @param array $objects
176+
* @return bool
177+
* @throws \Zend\Cache\Exception\ExceptionInterface
178+
* @throws \Zend\EntityMapper\Config\Container\Exceptions\ItemNotFoundException
179+
*/
180+
public function deleteArray(array $objects): bool
181+
{
182+
foreach ($objects as $object) {
183+
$entity = get_class($object);
184+
$this->setUp($entity);
185+
186+
$deletePerformer = new DeletePerformer(self::$tableGateways[$entity]);
187+
$deletePerformer->perform($object);
188+
}
189+
190+
return true;
191+
}
192+
193+
/**
194+
* @param $object
195+
* @return bool
196+
* @throws \Zend\Cache\Exception\ExceptionInterface
197+
* @throws \Zend\EntityMapper\Config\Container\Exceptions\ItemNotFoundException
198+
*/
199+
public function delete($object): bool
200+
{
201+
return $this->deleteArray([$object]);
202+
}
203+
173204
}
Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,57 @@
11
<?php
2+
3+
namespace Zend\EntityMapper\Db\Sql\Performer;
4+
5+
use Zend\Db\TableGateway\TableGateway;
6+
use Zend\EntityMapper\Config\Container\Container;
7+
use Zend\EntityMapper\Db\Sql\Performer\Base\AbstractPerformer;
8+
use Zend\EntityMapper\Mapping\Extraction\Extractor;
9+
210
/**
3-
* Created by PhpStorm.
4-
* User: Lucas A. de Araújo
5-
* Date: 13/07/2018
6-
* Time: 09:20
7-
*/
11+
* DeletePerformer
12+
*
13+
* @package Zend\EntityMapper\Db\Sql\Performer
14+
*/
15+
class DeletePerformer extends AbstractPerformer
16+
{
17+
/**
18+
* @var Container
19+
*/
20+
private $container;
21+
22+
/**
23+
* DeletePerformer constructor.
24+
*
25+
* @param TableGateway $tableGateway
26+
* @throws \Zend\Cache\Exception\ExceptionInterface
27+
*/
28+
public function __construct(TableGateway $tableGateway)
29+
{
30+
$this->tableGateway = $tableGateway;
31+
$this->container = new Container();
32+
}
33+
34+
/**
35+
* @param $object
36+
* @throws \Zend\Cache\Exception\ExceptionInterface
37+
* @throws \Zend\EntityMapper\Config\Container\Exceptions\ItemNotFoundException
38+
*/
39+
public function perform($object)
40+
{
41+
$entityName = get_class($object);
42+
$entityConf = $this->container->get($entityName);
43+
$primaryKey = null;
44+
$reflection = new \ReflectionObject($object);
45+
46+
foreach ($entityConf->getFields() as $field) {
47+
if ($field->isPrimaryKey()) {
48+
$primaryKey = $field;
49+
}
50+
}
51+
52+
$primaryKeyValue = $reflection->getProperty($primaryKey->getProperty())->getValue($object);
53+
$primaryKeyWhere = [$primaryKey->getAlias() => $primaryKeyValue];
54+
55+
$this->tableGateway->delete($primaryKeyWhere);
56+
}
57+
}

0 commit comments

Comments
 (0)