This commit is contained in:
2021-03-26 19:18:43 +08:00
parent 78cf1b2a9a
commit 0825725abe
+54 -33
View File
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Database\Condition; namespace Database\Condition;
use JetBrains\PhpStorm\Pure;
use Snowflake\Abstracts\BaseObject; use Snowflake\Abstracts\BaseObject;
use Snowflake\Core\Str; use Snowflake\Core\Str;
@@ -14,48 +15,68 @@ use Snowflake\Core\Str;
abstract class Condition extends BaseObject abstract class Condition extends BaseObject
{ {
protected string $column = ''; protected string $column = '';
protected string $opera = '='; protected string $opera = '=';
/** @var array|mixed */ /** @var array|mixed */
protected $value; protected $value;
const INT_TYPE = ['bit', 'bool', 'tinyint', 'smallint', 'mediumint', 'int', 'bigint', 'float', 'double', 'decimal', 'timestamp']; const INT_TYPE = ['bit', 'bool', 'tinyint', 'smallint', 'mediumint', 'int', 'bigint', 'float', 'double', 'decimal', 'timestamp'];
protected array $attributes = []; protected array $attributes = [];
abstract public function builder(); abstract public function builder();
/** /**
* @param string $column * @param string $column
*/ */
public function setColumn(string $column): void public function setColumn(string $column): void
{ {
$this->column = $column; $this->column = $column;
} }
/** /**
* @param string $opera * @param string $opera
*/ */
public function setOpera(string $opera): void public function setOpera(string $opera): void
{ {
$this->opera = $opera; $this->opera = $opera;
} }
/** /**
* @param $params * @param $params
*/ */
public function setValue($params): void public function setValue($params): void
{ {
if (is_array($params)) { if (is_array($params)) {
$values = []; $values = [];
foreach ($params as $item => $value) { foreach ($params as $item => $value) {
$values[$item] = is_numeric($value) ? $value : '\'' . $value . '\''; $values[$item] = is_numeric($value) ? $value : '\'' . $value . '\'';
} }
$this->value = $values; $this->value = $values;
} else { } else {
$this->value = is_numeric($params) ? $params : '\'' . $params . '\''; $this->value = $this->checkIsSqlString($params);
} }
} }
/**
* @param $params
* @return int|string
*/
#[Pure] private function checkIsSqlString($params): int|string
{
if (is_numeric($params)) {
return $params;
}
$check = strtolower(substr($params, 0, 6));
if (in_array($check, ['update', 'select', 'insert', 'delete'])) {
return $params;
} else {
return sprintf('\'%s\'', $params);
}
}
} }