diff --git a/Database/Base/BaseActiveRecord.php b/Database/Base/BaseActiveRecord.php index a206c987..4cc9aaee 100644 --- a/Database/Base/BaseActiveRecord.php +++ b/Database/Base/BaseActiveRecord.php @@ -1060,7 +1060,7 @@ abstract class BaseActiveRecord extends Component implements IOrm, ArrayAccess { return static::getDb()->getSchema() ->getColumns() - ->table('`' . static::getDbName() . '`.' . static::getTable()); + ->table(static::getTable()); } /** diff --git a/Database/Connection.php b/Database/Connection.php index 4e0e5a39..47a3a01f 100644 --- a/Database/Connection.php +++ b/Database/Connection.php @@ -272,87 +272,11 @@ class Connection extends Component */ public function createCommand($sql = null, string $dbname = '', array $attributes = []): Command { - if (!empty($dbname)) { - $sql = $this->clear($dbname, $sql); - } - $command = new Command(['db' => $this, 'sql' => $this->innerJoinMatch($dbname, $sql)]); + $command = new Command(['db' => $this, 'sql' => $sql]); return $command->bindValues($attributes); } - /** - * @param $dbname - * @param $sql - * @return array|string|null - */ - private function clear($dbname, $sql): array|string|null - { - $substr = strtoupper(substr($sql, 0, 6)); - return match ($substr) { - 'SELECT', 'SHOW F', 'DELETE' => $this->selectMatch($dbname, $sql), - 'UPDATE' => $this->updateMatch($dbname, $sql), - 'INSERT' => $this->insertMatch($dbname, $sql), - 'TRUNCA' => $this->truncateMatch($dbname, $sql), - default => $sql - }; - } - - - /** - * @param $dbname - * @param $sql - * @return array|string|null - */ - private function selectMatch($dbname, $sql): array|string|null - { - return preg_replace('/FROM\s+(\w+)\s+/', 'FROM `' . $dbname . '`.$1 ', $sql); - } - - - /** - * @param $dbname - * @param $sql - * @return array|string|null - */ - private function innerJoinMatch($dbname, $sql): array|string|null - { - return preg_replace('/(INNER|LEFT|RIGHT) JOIN\s+(\w+)\s/', '$1 JOIN `' . $dbname . '`.$2 ', $sql); - } - - - /** - * @param $dbname - * @param $sql - * @return array|string|null - */ - private function updateMatch($dbname, $sql): array|string|null - { - return preg_replace('/UPDATE\s+(\w+)\s+SET/', 'UPDATE `' . $dbname . '`.$1 SET', $sql); - } - - - /** - * @param $dbname - * @param $sql - * @return array|string|null - */ - private function insertMatch($dbname, $sql): array|string|null - { - return preg_replace('/INSERT INTO\s+(\w+)/', 'INSERT INTO `' . $dbname . '`.$1', $sql); - } - - - /** - * @param $dbname - * @param $sql - * @return array|string|null - */ - private function truncateMatch($dbname, $sql): array|string|null - { - return preg_replace('/TRUNCATE\s+(\w+)\s+/', 'TRUNCATE `' . $dbname . '`.$1', $sql); - } - - /** * * 回收链接 diff --git a/Database/Traits/QueryTrait.php b/Database/Traits/QueryTrait.php index 88ebf831..d292a3b5 100644 --- a/Database/Traits/QueryTrait.php +++ b/Database/Traits/QueryTrait.php @@ -16,7 +16,6 @@ use Database\ActiveRecord; use Database\Condition\MathematicsCondition; use Database\Query; use Exception; -use JetBrains\PhpStorm\Pure; use ReflectionException; use Snowflake\Exception\NotFindClassException; use Snowflake\Snowflake; @@ -138,7 +137,7 @@ trait QueryTrait */ public function getTable(): string { - return $this->modelClass::getTable(); + return '`' . $this->modelClass::getDbName() . '`' . $this->modelClass::getTable(); }