Overview

Namespaces

  • DSchoenbauer
    • Orm
      • Builder
      • Entity
      • Enum
      • Events
        • Persistence
        • Validate
          • DataType
          • Schema
      • Exception
      • Framework

Classes

  • DSchoenbauer\Orm\Builder\ModelDirector
  • DSchoenbauer\Orm\Builder\PdoModelBuilder
  • DSchoenbauer\Orm\CrudModel
  • DSchoenbauer\Orm\Entity\AbstractEntity
  • DSchoenbauer\Orm\Enum\ModelEvents
  • DSchoenbauer\Orm\Events\AbstractEvent
  • DSchoenbauer\Orm\Events\Persistence\PdoCreate
  • DSchoenbauer\Orm\Events\Persistence\PdoDelete
  • DSchoenbauer\Orm\Events\Persistence\PdoSelect
  • DSchoenbauer\Orm\Events\Persistence\PdoUpdate
  • DSchoenbauer\Orm\Events\Validate\AbstractValidate
  • DSchoenbauer\Orm\Events\Validate\DataType\AbstractDataType
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeBoolean
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeDate
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeNumber
  • DSchoenbauer\Orm\Events\Validate\DataType\DataTypeString
  • DSchoenbauer\Orm\Events\Validate\Schema\DefaultValue
  • DSchoenbauer\Orm\Events\Validate\Schema\RequiredFields
  • DSchoenbauer\Orm\Events\Validate\Schema\ValidFields
  • DSchoenbauer\Orm\Exception\InvalidDataTypeException
  • DSchoenbauer\Orm\Exception\RequiredFieldMissingException
  • DSchoenbauer\Orm\Framework\Attribute
  • DSchoenbauer\Orm\Framework\AttributeCollection
  • DSchoenbauer\Orm\Model

Interfaces

  • DSchoenbauer\Orm\Builder\BuilderInterface
  • DSchoenbauer\Orm\Builder\DirectorInterface
  • DSchoenbauer\Orm\Entity\EntityInterface
  • DSchoenbauer\Orm\Entity\HasBoolFieldsInterface
  • DSchoenbauer\Orm\Entity\HasDateFieldsInterface
  • DSchoenbauer\Orm\Entity\HasDateWithCustomFormatInterface
  • DSchoenbauer\Orm\Entity\HasDefaultValuesInterface
  • DSchoenbauer\Orm\Entity\HasFilterInterface
  • DSchoenbauer\Orm\Entity\HasNumericFieldsInterface
  • DSchoenbauer\Orm\Entity\HasRequiredFieldsInterface
  • DSchoenbauer\Orm\Entity\HasStaticValuesInterface
  • DSchoenbauer\Orm\Entity\HasStringFieldsInterface
  • DSchoenbauer\Orm\Entity\IsSortableInterface
  • DSchoenbauer\Orm\Exception\OrmExceptionInterface
  • DSchoenbauer\Orm\VisitorInterface
  • Overview
  • Namespace
  • Class
  1: <?php
  2: /*
  3:  * To change this license header, choose License Headers in Project Properties.
  4:  * To change this template file, choose Tools | Templates
  5:  * and open the template in the editor.
  6:  */
  7: namespace DSchoenbauer\Orm\Events\Persistence;
  8: 
  9: use DSchoenbauer\Orm\Events\AbstractEvent;
 10: use DSchoenbauer\Orm\Model;
 11: use DSchoenbauer\Sql\Command\Delete;
 12: use DSchoenbauer\Sql\Where\ArrayWhere;
 13: use PDO;
 14: use Zend\EventManager\Event;
 15: 
 16: /**
 17:  * Event driven hook to delete information from a PDO connection
 18:  *
 19:  * @author David Schoenbauer <dschoenbauer@gmail.com>
 20:  */
 21: class PdoDelete extends AbstractEvent
 22: {
 23: 
 24:     private $adapter;
 25:     private $delete;
 26: 
 27:     /**
 28:      * @param array $events An array of event names to bind to
 29:      * @param PDO $adapter
 30:      * @param Delete $delete
 31:      */
 32:     public function __construct(array $events, PDO $adapter, Delete $delete = null)
 33:     {
 34:         parent::__construct($events);
 35:         $this->setAdapter($adapter)->setDelete($delete);
 36:     }
 37: 
 38:     /**
 39:      * event action
 40:      * @param Event $event object passed when event is fired
 41:      * @return void
 42:      * @since v1.0.0
 43:      */
 44:     public function onExecute(Event $event)
 45:     {
 46:         if (!$event->getTarget() instanceof Model) {
 47:             return;
 48:         }
 49:         /* @var $model Model */
 50:         $model = $event->getTarget();
 51:         $entity = $model->getEntity();
 52:         $this->getDelete()
 53:             ->setTable($entity->getTable())
 54:             ->setWhere(new ArrayWhere([$entity->getIdField() => $model->getId()]))
 55:             ->execute($this->getAdapter());
 56:     }
 57:     /**
 58:      * Returns a PHP Data Object
 59:      * @return PDO
 60:      * @since v1.0.0
 61:      */
 62:     public function getAdapter()
 63:     {
 64:         return $this->adapter;
 65:     }
 66: 
 67:         /**
 68:      * PDO connection to a db of some sort.
 69:      * @param PDO $adapter
 70:      * @return $this
 71:      * @since v1.0.0
 72:      */
 73:     public function setAdapter(PDO $adapter)
 74:     {
 75:         $this->adapter = $adapter;
 76:         return $this;
 77:     }
 78: 
 79:     /**
 80:      * object with logic for the delete. If Delete is not provided one will be lazy loaded
 81:      * @return Delete
 82:      * @since v1.0.0
 83:      */
 84:     public function getDelete()
 85:     {
 86:         if (!$this->delete) {
 87:             $this->setDelete(new Delete(null));
 88:         }
 89:         return $this->delete;
 90:     }
 91: 
 92:     /**
 93:      * Object that contains the delete logic
 94:      * @param Delete $delete
 95:      * @return $this
 96:      * @since v1.0.0
 97:      */
 98:     public function setDelete(Delete $delete = null)
 99:     {
100:         $this->delete = $delete;
101:         return $this;
102:     }
103: }
104: 
API documentation generated by ApiGen