getConnection() public method

Get the database connection instance.
public getConnection ( ) : Illuminate\Database\ConnectionInterface
return Illuminate\Database\ConnectionInterface
 /**
  * Process an "insert get ID" query.
  *
  * @param \Illuminate\Database\Query\Builder $query        	
  * @param string $sql        	
  * @param array $values        	
  * @param string $sequence        	
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $results = $query->getConnection()->selectFromWriteConnection($sql, $values);
     $sequence = $sequence ?: 'id';
     $result = (array) $results[0];
     $id = $result[$sequence];
     return is_numeric($id) ? (int) $id : $id;
 }
Example #2
2
 /**
  * Process an "insert get ID" query.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $results = $query->getConnection()->select($sql, $values);
     $sequence = $sequence ?: 'id';
     $result = (array) $results[0];
     return (int) $result[$sequence];
 }
Example #3
1
 /**
  * Create a new join clause instance.
  *
  * @param  \Illuminate\Database\Query\Builder $parentQuery
  * @param  string  $type
  * @param  string  $table
  * @return void
  */
 public function __construct(Builder $parentQuery, $type, $table)
 {
     $this->type = $type;
     $this->table = $table;
     $this->parentQuery = $parentQuery;
     parent::__construct($parentQuery->getConnection(), $parentQuery->getGrammar(), $parentQuery->getProcessor());
 }
 /**
  * Get rows count
  *
  * @return int
  */
 public function count()
 {
     $connection = $this->query->getConnection();
     $myQuery = clone $this->query;
     // if its a normal query ( no union, having and distinct word )
     // replace the select with static text to improve performance
     if (!Str::contains(Str::lower($myQuery->toSql()), ['union', 'having', 'distinct', 'order by', 'group by'])) {
         $row_count = $connection->getQueryGrammar()->wrap('row_count');
         $myQuery->select($connection->raw("'1' as {$row_count}"));
     }
     return $connection->table($connection->raw('(' . $myQuery->toSql() . ') count_row_table'))->setBindings($myQuery->getBindings())->count();
 }
Example #5
0
 /**
  * @param array $fields
  * @return array
  */
 public function fields($fields = [])
 {
     if (empty($fields)) {
         $conn = $this->operator->getConnection();
         if ($conn->getName() == 'mysql') {
             $results = $conn->select((new \Illuminate\Database\Schema\Grammars\MySqlGrammar())->compileColumnExists(), [$conn->getDatabaseName(), $conn->getTablePrefix() . $this->table]);
             $this->_fields = array_map(function ($v) {
                 return is_array($v) ? $v['column_name'] : $v->column_name;
             }, $results);
         }
     }
     return $this->_fields;
 }
 /**
  * Process an "insert get ID" query.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $result = $query->getConnection()->selectFromWriteConnection($sql, $values)[0];
     $sequence = $sequence ?: 'id';
     $id = is_object($result) ? $result->{$sequence} : $result[$sequence];
     return is_numeric($id) ? (int) $id : $id;
 }
 /**
  * Parse the fulltext search parameter q
  *
  * @param  string $qParam
  * @param  array  $fullTextSearchColumns
  * @return void
  */
 protected function parseFullTextSearch($qParam, $fullTextSearchColumns)
 {
     if ($qParam == '') {
         //Add where that will never be true
         $this->query->whereRaw('0 = 1');
         return;
     }
     $fulltextType = Config::get('apihandler.fulltext');
     if ($fulltextType == 'native') {
         //Use pdo's quote method to be protected against sql-injections.
         //The usual placeholders unfortunately don't seem to work using AGAINST().
         $qParam = $this->query->getConnection()->getPdo()->quote($qParam);
         //Use native fulltext search
         $this->query->whereRaw('MATCH(' . implode(',', $fullTextSearchColumns) . ') AGAINST("' . $qParam . '" IN BOOLEAN MODE)');
         //Add the * to the selects because of the score column
         if (count($this->query->columns) == 0) {
             $this->query->addSelect('*');
         }
         //Add the score column
         $scoreColumn = Config::get('apihandler.fulltext_score_column');
         $this->query->addSelect($this->query->raw('MATCH(' . implode(',', $fullTextSearchColumns) . ') AGAINST("' . $qParam . '" IN BOOLEAN MODE) as `' . $scoreColumn . '`'));
     } else {
         $keywords = explode(' ', $qParam);
         //Use default php implementation
         $this->query->where(function ($query) use($fullTextSearchColumns, $keywords) {
             foreach ($fullTextSearchColumns as $column) {
                 foreach ($keywords as $keyword) {
                     $query->orWhere($column, 'LIKE', '%' . $keyword . '%');
                 }
             }
         });
     }
 }
 /**
  * Process an  "insert get ID" query.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $query->getConnection()->insert($sql, $values);
     try {
         $id = $query->getConnection()->getPdo()->lastInsertId();
     } catch (\PDOException $e) {
         if ($e->getCode() == 'IM001') {
             $sth = $query->getConnection()->getPdo()->query("SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS int)");
             $sth->execute();
             $result = $sth->fetch();
             $id = $result[0];
         } else {
             throw $e;
         }
     }
     return is_numeric($id) ? (int) $id : $id;
 }
Example #9
0
 /**
  * Get a paginator only supporting simple next and previous links.
  *
  * This is more efficient on larger data-sets, etc.
  *
  * @param  int    $perPage
  * @param  array  $columns
  * @return \Illuminate\Pagination\Paginator
  */
 public function simplePaginate($perPage = null, $columns = array('*'))
 {
     $paginator = $this->query->getConnection()->getPaginator();
     $page = $paginator->getCurrentPage();
     $perPage = $perPage ?: $this->model->getPerPage();
     $this->query->skip(($page - 1) * $perPage)->take($perPage + 1);
     return $paginator->make($this->get($columns)->all(), $perPage);
 }
Example #10
0
 /**
  * Get the first record matching the attributes or create it.
  *
  * @param  array  $attributes
  * @param  array  $values
  * @return \Illuminate\Database\Eloquent\Model
  */
 public function firstOrCreate(array $attributes, array $values = [])
 {
     if (!is_null($instance = $this->where($attributes)->first())) {
         return $instance;
     }
     $instance = $this->model->newInstance($attributes + $values)->setConnection($this->query->getConnection()->getName());
     $instance->save();
     return $instance;
 }
Example #11
0
 /**
  * Get a paginator for the "select" statement.
  *
  * @param  int    $perPage
  * @param  array  $columns
  * @return \Illuminate\Pagination\Paginator
  */
 public function paginate($perPage = null, $columns = array('*'))
 {
     $perPage = $perPage ?: $this->model->getPerPage();
     $paginator = $this->query->getConnection()->getPaginator();
     if (isset($this->query->groups)) {
         return $this->groupedPaginate($paginator, $perPage, $columns);
     } else {
         return $this->ungroupedPaginate($paginator, $perPage, $columns);
     }
 }
 /**
  * EloquentManager constructor.
  *
  * @param Builder|\Eloquent $model
  * @param Request $request
  */
 public function __construct($model, Request $request)
 {
     $this->response = new DataTable();
     $this->query = $model instanceof Builder ? $model : $model->getQuery();
     $this->request = $request;
     //        $this->columns    = $this->query->columns;
     $this->connection = $model->getConnection();
     $this->prefix = $this->connection->getTablePrefix();
     $this->database = $this->connection->getDriverName();
 }
 /**
  * Process an "insert get ID" query.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $connection = $query->getConnection();
     $connection->insert($sql, $values);
     if ($connection->getConfig('odbc') === true) {
         $id = $this->processInsertGetIdForOdbc($connection);
     } else {
         $id = $connection->getPdo()->lastInsertId();
     }
     return is_numeric($id) ? (int) $id : $id;
 }
 /**
  * Initialize attributes.
  *
  * @param  \Yajra\Datatables\Request $request
  * @param  \Illuminate\Database\Query\Builder $builder
  * @param  string $type
  */
 protected function init($request, $builder, $type = 'builder')
 {
     $this->request = $request;
     $this->query_type = $type;
     $this->columns = $builder->columns;
     $this->connection = $builder->getConnection();
     $this->prefix = $this->connection->getTablePrefix();
     $this->database = $this->connection->getDriverName();
     if ($this->isDebugging()) {
         $this->connection->enableQueryLog();
     }
 }
Example #15
0
 public static function toSql(Builder $query)
 {
     $sql = $query->toSql();
     $connection = $query->getConnection();
     $pdo = $connection->getPdo();
     $bindings = $query->getBindings();
     $bindings = $connection->prepareBindings($bindings);
     if (!empty($bindings)) {
         foreach ($bindings as $binding) {
             $sql = preg_replace('/\\?/', $pdo->quote($binding), $sql, 1);
         }
     }
     return $sql;
 }
Example #16
0
 /**
  * Process an "insert get ID" query.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int/array
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $sequenceStr = $sequence ?: 'id';
     if (is_array($sequence)) {
         $grammar = new DB2Grammar();
         $sequenceStr = $grammar->columnize($sequence);
     }
     $sql = 'select ' . $sequenceStr . ' from new table (' . $sql;
     $sql .= ')';
     $results = $query->getConnection()->select($sql, $values);
     if (is_array($sequence)) {
         return array_values((array) $results[0]);
     } else {
         $result = (array) $results[0];
         $id = $result[$sequenceStr];
         return is_numeric($id) ? (int) $id : $id;
     }
 }
 /**
  * Process an "insert get ID" query.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $counter = 0;
     $last_insert_id = 0;
     //Get PDO object
     $pdo = $query->getConnection()->getPdo();
     // get PDO statment object
     $stmt = $pdo->prepare($sql);
     // PDO driver params are 1-based so ++ has to be before bindValue
     // OCI driver params are 0-based so no ++ before bindValue
     if (get_class($pdo) != 'Jfelder\\OracleDB\\OCI_PDO\\OCI') {
         $counter++;
     }
     // bind each parameter from the values array to their location in the
     foreach ($values as $k => $v) {
         $stmt->bindValue($counter++, $v, $this->bindType($v));
     }
     // bind output param for the returning cluase
     $stmt->bindParam($counter, $last_insert_id, \PDO::PARAM_INT | \PDO::PARAM_INPUT_OUTPUT, 8);
     // execute statement
     $stmt->execute();
     return (int) $last_insert_id;
 }
Example #18
0
 function __construct(Builder $builder)
 {
     $this->builder = $builder;
     $this->connection = $builder->getConnection();
 }
Example #19
0
 /**
  * Init nested query for filter.
  *
  * @param QueryBuilder $query
  * @param array $ids
  *
  * @return void
  */
 protected function initNestedQuery(QueryBuilder $query, array $ids)
 {
     $connection = $query->getConnection();
     $keyName = $connection->raw($this->relation->getParent()->getQualifiedKeyName());
     $query->from($this->relation->getTable())->select($connection->raw('1'))->where($this->relation->getForeignKey(), '=', $keyName)->whereIn($this->relation->getOtherKey(), $ids);
 }
 /**
  * Process an "insert get ID" query.
  *
  * @param  Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $results = $query->getConnection()->select($sql, $values);
     die(var_dump($results));
 }
 /**
  * Performs the count query and returns info about the pages
  *
  * @param \Illuminate\Database\Query\Builder	$countQuery
  * @param string								$querySql
  * @param int									$page
  *
  * @return array
  */
 public function performCountQuery(QueryBuilder $countQuery, $querySql, $page)
 {
     //grab the model instance
     $model = $this->config->getDataModel();
     //then wrap the inner table and perform the count
     $sql = "SELECT COUNT({$model->getKeyName()}) AS aggregate FROM ({$querySql}) AS agg";
     //then perform the count query
     $results = $countQuery->getConnection()->select($sql, $countQuery->getBindings());
     $numRows = $results[0]->aggregate;
     $page = (int) $page;
     $last = (int) ceil($numRows / $this->rowsPerPage);
     return array('page' => $page > $last ? $last : $page, 'last' => $last, 'total' => $numRows);
 }
 /**
  * Process an "insert get ID" query.
  *
  * @param  Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $results = $query->getConnection()->select($sql, $values);
     $sequence = $sequence ?: 'id';
     return $results[0]->{$sequence};
 }
Example #23
0
 /**
  * Process an  "insert get ID" query.
  *
  * @param  \Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $query->getConnection()->insert($sql, $values);
     $id = $query->getConnection()->getPdo()->lastInsertId($sequence);
     return is_numeric($id) ? (int) $id : $id;
 }
Example #24
0
 /**
  * @param \Illuminate\Database\Query\Builder $builder
  * @param  array                             $data
  */
 protected function batchInsert(\Illuminate\Database\Query\Builder $builder, array $data)
 {
     $builder->getConnection()->transaction(function () use($builder, $data) {
         // Batch in group of 250 entries to prevent "Too many SQL variables" SQL error
         $insertBatchSize = 250;
         $insertBatchCount = ceil(count($data) / $insertBatchSize);
         for ($i = 0; $i < $insertBatchCount; ++$i) {
             $insertedData = array_slice($data, $i * $insertBatchSize, $insertBatchSize);
             $builder->insert($insertedData);
         }
     });
 }
 /**
  * Process an  "insert get ID" query.
  *
  * @param  Illuminate\Database\Query\Builder  $query
  * @param  string  $sql
  * @param  array   $values
  * @param  string  $sequence
  * @return int
  */
 public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
 {
     $query->getConnection()->insert($sql, $values);
     return $query->getConnection()->getPdo()->lastInsertId($sequence);
 }
Example #26
0
 protected function getQueryKey(Builder $builder, $other = null)
 {
     $name = $builder->getConnection()->getName();
     return md5($name . $builder->toSql() . serialize($builder->getBindings()) . $other);
 }
Example #27
0
 /**
  * @param Builder $query
  * @param string $sql
  * @internal param $PDOStatement
  */
 protected function prepareStatement(Builder $query, $sql)
 {
     $this->statement = $query->getConnection()->getPdo()->prepare($sql);
 }
Example #28
0
 /**
  * save Query with Blob returning primary key value
  *
  * @param  Builder $query
  * @param  string $sql
  * @param  array $values
  * @param  array $binaries
  * @return int
  */
 public function saveLob(Builder $query, $sql, array $values, array $binaries)
 {
     $counter = 0;
     $lob = [];
     $id = 0;
     // begin transaction
     $pdo = $query->getConnection()->getPdo();
     $inTransaction = $pdo->inTransaction();
     if (!$inTransaction) {
         $pdo->beginTransaction();
     }
     // set PDO statement property
     $this->prepareStatement($query, $sql);
     $counter = $this->bindValuesAndReturnCounter($values, $counter);
     $binariesCount = count($binaries);
     for ($i = 0; $i < $binariesCount; $i++) {
         // bind blob descriptor
         $this->statement->bindParam($counter, $lob[$i], PDO::PARAM_LOB);
         $counter++;
     }
     // bind output param for the returning clause
     $this->statement->bindParam($counter, $id, PDO::PARAM_INT);
     // execute statement
     if (!$this->statement->execute()) {
         $pdo->rollBack();
         return false;
     }
     for ($i = 0; $i < $binariesCount; $i++) {
         // Discard the existing LOB contents
         if (!$lob[$i]->truncate()) {
             $pdo->rollBack();
             return false;
         }
         // save blob content
         if (!$lob[$i]->save($binaries[$i])) {
             $pdo->rollBack();
             return false;
         }
     }
     if (!$inTransaction) {
         // commit statements
         $pdo->commit();
     }
     return (int) $id;
 }
Example #29
-1
 /**
  * Get prepared statement.
  *
  * @param Builder $query
  * @param string $sql
  * @return \PDOStatement|\Yajra\Pdo\Oci8
  */
 private function prepareStatement(Builder $query, $sql)
 {
     /** @var \Yajra\Oci8\Oci8Connection $connection */
     $connection = $query->getConnection();
     $pdo = $connection->getPdo();
     return $pdo->prepare($sql);
 }
Example #30
-1
 /**
  * Get prepared statement.
  *
  * @param Builder $query
  * @param string $sql
  * @return \PDOStatement | \Yajra\Pdo\Oci8
  */
 private function prepareStatement(Builder $query, $sql)
 {
     $pdo = $query->getConnection()->getPdo();
     return $pdo->prepare($sql);
 }