summaryrefslogtreecommitdiff
path: root/src/illuminate/Query/FirebirdBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/illuminate/Query/FirebirdBuilder.php')
-rwxr-xr-xsrc/illuminate/Query/FirebirdBuilder.php126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/illuminate/Query/FirebirdBuilder.php b/src/illuminate/Query/FirebirdBuilder.php
new file mode 100755
index 0000000..119e804
--- /dev/null
+++ b/src/illuminate/Query/FirebirdBuilder.php
@@ -0,0 +1,126 @@
+<?php
+
+namespace Firebird\Illuminate\Query;
+
+use Illuminate\Database\Query\Builder as QueryBuilder;
+use Illuminate\Support\Collection;
+
+class FirebirdBuilder extends QueryBuilder
+{
+ /**
+ * Determine if any rows exist for the current query.
+ *
+ * @return bool
+ */
+ public function exists()
+ {
+ return parent::count() > 0;
+ }
+
+ /**
+ * Add a from stored procedure clause to the query builder.
+ *
+ * @param string $procedure
+ * @param array $values
+ * @return \Illuminate\Database\Query\Builder|static
+ */
+ public function fromProcedure(string $procedure, array $values = [])
+ {
+ $compiledProcedure = $this->grammar->compileProcedure($this, $procedure, $values);
+
+ // Remove any expressions from the values array, as they will have
+ // already been evaluated by the grammar's parameterize() function.
+ $values = array_filter($values, function($value) {
+ return ! $this->grammar->isExpression($value);
+ });
+
+ $this->fromRaw($compiledProcedure, array_values($values));
+
+ return $this;
+ }
+
+ /**
+ * Insert new records into the database.
+ *
+ * @return bool
+ */
+ public function insert(array $values)
+ {
+ // Handle multi-row inserts by looping
+ if (count($values) > 1 && is_array(reset($values))) {
+ $results = [];
+ foreach ($values as $row) {
+ $results[] = parent::insert($row);
+ }
+ return end($results);
+ }
+
+ // Single row or already formatted correctly
+ return parent::insert($values);
+ }
+ public function where($column, $operator = NULL, $value = NULL, $boolean = 'and')
+ {
+ // Not sure what this was intended to fix, but target hidden for now
+ if (! str($operator)->contains('hide', true)) {
+ return parent::where($column, $operator, $value, $boolean);
+ }
+
+ // when is search covert to upper case column and value at database level
+ $wrapped = $this->grammar->wrap($column);
+ return $boolean === 'and'
+ ? parent::whereRaw("UPPER($wrapped) LIKE UPPER(?)", [$value])
+ : parent::orWhereRaw("UPPER($wrapped) LIKE UPPER(?)", [$value]);
+ }
+
+ /**
+ * Retrieve column values from rows represented as objects.
+ *
+ * @param array $queryResult
+ * @param string $column
+ * @param string $key
+ * @return Collection
+ */
+ protected function pluckFromObjectColumn($queryResult, $column, $key)
+ {
+ $results = [];
+ $column = str_replace('"', '', $column);
+ foreach ($queryResult as $item) {
+ if (is_null($key)) {
+ foreach ($queryResult as $row) {
+ $results[] = $row->$column;
+ }
+ } else {
+ foreach ($queryResult as $row) {
+ $results[$row->$key] = $row->$column;
+ }
+ }
+ }
+
+ return new Collection($results);
+ }
+
+ /**
+ * Retrieve column values from rows represented as arrays.
+ *
+ * @param array $queryResult
+ * @param string $column
+ * @param string $key
+ * @return Collection
+ */
+ protected function pluckFromArrayColumn($queryResult, $column, $key)
+ {
+ $results = [];
+
+ if (is_null($key)) {
+ foreach ($queryResult as $row) {
+ $results[] = $row[$column];
+ }
+ } else {
+ foreach ($queryResult as $row) {
+ $results[$row[$key]] = $row[$column];
+ }
+ }
+
+ return new Collection($results);
+ }
+}