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\Update;
 12: use DSchoenbauer\Sql\Where\ArrayWhere;
 13: use PDO;
 14: use Zend\EventManager\Event;
 15: 
 16: /**
 17:  * Event driven hook to update information from a PDO connection
 18:  *
 19:  * @author David Schoenbauer <dschoenbauer@gmail.com>
 20:  */
 21: class PdoUpdate extends AbstractEvent
 22: {
 23: 
 24:     private $adapter;
 25:     private $update;
 26: 
 27:     /**
 28:      * @param array $events An array of event names to bind to
 29:      * @param PDO $adapter
 30:      * @param Update $update
 31:      */
 32:     public function __construct(array $events, PDO $adapter, Update $update = null)
 33:     {
 34:         parent::__construct($events);
 35:         $this->setAdapter($adapter)->setUpdate($update);
 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->getUpdate()
 53:             ->setTable($entity->getTable())->setData($model->getData())
 54:             ->setWhere(new ArrayWhere([$entity->getIdField() => $model->getId()]))
 55:             ->execute($this->getAdapter());
 56:     }
 57: 
 58:     /**
 59:      * Returns a PHP Data Object
 60:      * @return PDO
 61:      * @since v1.0.0
 62:      */
 63:     public function getAdapter()
 64:     {
 65:         return $this->adapter;
 66:     }
 67: 
 68:     /**
 69:      * PDO connection to a db of some sort.
 70:      * @param PDO $adapter
 71:      * @return $this
 72:      * @since v1.0.0
 73:      */
 74:     public function setAdapter($adapter)
 75:     {
 76:         $this->adapter = $adapter;
 77:         return $this;
 78:     }
 79: 
 80:     /**
 81:      * object with logic for the Update. If Update is not provided one will be lazy loaded
 82:      * @return Update
 83:      * @since v1.0.0
 84:      */
 85:     public function getUpdate()
 86:     {
 87:         if (!$this->update instanceof Update) {
 88:             $this->setUpdate(new Update(null, []));
 89:         }
 90:         return $this->update;
 91:     }
 92: 
 93:     /**
 94:      * Object that contains the update logic
 95:      * @param Update $update
 96:      * @return $this
 97:      * @since v1.0.0
 98:      */
 99:     public function setUpdate(Update $update = null)
100:     {
101:         $this->update = $update;
102:         return $this;
103:     }
104: }
105: 
API documentation generated by ApiGen