/** * Escape / wrap an string for sql * * @param string|Expression $string */ public function escape($string) { if (\DB::is_expression($string)) { return $string->value; } // the string might contain an 'as' statement that we wil have to split. if (strpos($string, ' as ') !== false) { $string = explode(' as ', $string); return $this->escape(trim($string[0])) . ' as ' . $this->escape(trim($string[1])); } // it also might contain dott seperations we have to split if (strpos($string, '.') !== false) { $string = explode('.', $string); foreach ($string as $key => $item) { $string[$key] = $this->escape_string($item); } return implode('.', $string); } return $this->escape_string($string); }
/** * DB::is_expression tests */ public function test_is_expression() { $this->assertFalse(DB::is_expression('nope')); $this->assertTrue(DB::is_expression(DB::raw('jep'))); }