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