Overview

Namespaces

  • None
  • Yajra
    • Oci8
      • Connectors
      • Eloquent
      • Query
        • Grammars
        • Processors
      • Schema
        • Grammars

Classes

  • Yajra\Oci8\Connectors\OracleConnector
  • Yajra\Oci8\Eloquent\OracleEloquent
  • Yajra\Oci8\Oci8Connection
  • Yajra\Oci8\Oci8ServiceProvider
  • Yajra\Oci8\Query\Grammars\OracleGrammar
  • Yajra\Oci8\Query\OracleBuilder
  • Yajra\Oci8\Query\Processors\OracleProcessor
  • Yajra\Oci8\Schema\Comment
  • Yajra\Oci8\Schema\Grammars\OracleGrammar
  • Yajra\Oci8\Schema\OracleAutoIncrementHelper
  • Yajra\Oci8\Schema\OracleBlueprint
  • Yajra\Oci8\Schema\OracleBuilder
  • Yajra\Oci8\Schema\Sequence
  • Yajra\Oci8\Schema\Trigger

Traits

  • Yajra\Oci8\OracleReservedWords

Functions

  • config_path
  • Overview
  • Namespace
  • Class
  1: <?php
  2: 
  3: namespace Yajra\Oci8\Schema;
  4: 
  5: use Illuminate\Database\Connection;
  6: 
  7: class Sequence
  8: {
  9:     /**
 10:      * @var \Illuminate\Database\Connection
 11:      */
 12:     protected $connection;
 13: 
 14:     /**
 15:      * @param Connection $connection
 16:      */
 17:     public function __construct(Connection $connection)
 18:     {
 19:         $this->connection = $connection;
 20:     }
 21: 
 22:     /**
 23:      * function to create oracle sequence
 24:      *
 25:      * @param  string $name
 26:      * @param  integer $start
 27:      * @param  boolean $nocache
 28:      * @return boolean
 29:      */
 30:     public function create($name, $start = 1, $nocache = false)
 31:     {
 32:         if (! $name) {
 33:             return false;
 34:         }
 35: 
 36:         $nocache = $nocache ? 'nocache' : '';
 37: 
 38:         return $this->connection->statement("create sequence {$name} start with {$start} {$nocache}");
 39:     }
 40: 
 41:     /**
 42:      * function to safely drop sequence db object
 43:      *
 44:      * @param  string $name
 45:      * @return boolean
 46:      */
 47:     public function drop($name)
 48:     {
 49:         // check if a valid name and sequence exists
 50:         if (! $name or ! $this->exists($name)) {
 51:             return false;
 52:         }
 53: 
 54:         return $this->connection->statement("
 55:             declare
 56:                 e exception;
 57:                 pragma exception_init(e,-02289);
 58:             begin
 59:                 execute immediate 'drop sequence {$name}';
 60:             exception
 61:             when e then
 62:                 null;
 63:             end;");
 64:     }
 65: 
 66:     /**
 67:      * function to check if sequence exists
 68:      *
 69:      * @param  string $name
 70:      * @return boolean
 71:      */
 72:     public function exists($name)
 73:     {
 74:         if (! $name) {
 75:             return false;
 76:         }
 77: 
 78:         return $this->connection->selectOne("select *
 79:             from all_sequences
 80:             where
 81:                 sequence_name=upper('{$name}')
 82:                 and sequence_owner=upper(user)
 83:             ");
 84:     }
 85: 
 86:     /**
 87:      * get sequence next value
 88:      *
 89:      * @param  string $name
 90:      * @return integer
 91:      */
 92:     public function nextValue($name)
 93:     {
 94:         if (! $name) {
 95:             return 0;
 96:         }
 97: 
 98:         return $this->connection->selectOne("SELECT $name.NEXTVAL as id FROM DUAL")->id;
 99:     }
100: 
101:     /**
102:      * same function as lastInsertId. added for clarity with oracle sql statement.
103:      *
104:      * @param  string $name
105:      * @return integer
106:      */
107:     public function currentValue($name)
108:     {
109:         return $this->lastInsertId($name);
110:     }
111: 
112:     /**
113:      * function to get oracle sequence last inserted id
114:      *
115:      * @param  string $name
116:      * @return integer
117:      */
118:     public function lastInsertId($name)
119:     {
120:         // check if a valid name and sequence exists
121:         if (! $name or ! $this->exists($name)) {
122:             return 0;
123:         }
124: 
125:         return $this->connection->selectOne("select {$name}.currval as id from dual")->id;
126:     }
127: }
128: 
API documentation generated by ApiGen