diff --git a/rework.org b/rework.org index 575385a..f968473 100644 --- a/rework.org +++ b/rework.org @@ -22,74 +22,74 @@ En la siguiente tabla se encuentra la lista de estados de los SGBD que he probad + *not supported* como no soportado por el SGBD. + *fixed* para aquello que no existe, pero la librería lo traduce a un equivalente. -|------------------+---------------+---------+------------| -| method | MySQL/MariaDB | sqlite3 | postgreSQL | -|------------------+---------------+---------+------------| -| db | ok | | | -|------------------+---------------+---------+------------| -| query | ok | | | -|------------------+---------------+---------+------------| -| resetQuery | ok | | | -|------------------+---------------+---------+------------| -| buildQuery | ok | | | -|------------------+---------------+---------+------------| -| getInstance | ok | | | -|------------------+---------------+---------+------------| -| getVars | ok | | | -|------------------+---------------+---------+------------| -| className | ok | | | -|------------------+---------------+---------+------------| -| table | ok | | | -|------------------+---------------+---------+------------| -| update | ok | | | -|------------------+---------------+---------+------------| -| beginTransaction | ok | | | -|------------------+---------------+---------+------------| -| rollBack | ok | | | -|------------------+---------------+---------+------------| -| commit | ok | | | -|------------------+---------------+---------+------------| -| add | ok | | | -|------------------+---------------+---------+------------| -| save | ok | | | -|------------------+---------------+---------+------------| -| delete | ok | | | -|------------------+---------------+---------+------------| -| select | ok | | | -|------------------+---------------+---------+------------| -| from | ok | | | -|------------------+---------------+---------+------------| -| where | ok | | | -|------------------+---------------+---------+------------| -| where_in | ok | | | -|------------------+---------------+---------+------------| -| leftJoin | ok | | | -|------------------+---------------+---------+------------| -| rightJoin | ok | | | -|------------------+---------------+---------+------------| -| innerJoin | ok | | | -|------------------+---------------+---------+------------| -| and | ok | | | -|------------------+---------------+---------+------------| -| or | ok | | | -|------------------+---------------+---------+------------| -| groupBy | ok | | | -|------------------+---------------+---------+------------| -| limit | ok | | | -|------------------+---------------+---------+------------| -| orderBy | ok | | | -|------------------+---------------+---------+------------| -| count | ok | | | -|------------------+---------------+---------+------------| -| getById | ok | | | -|------------------+---------------+---------+------------| -| search | ok | | | -|------------------+---------------+---------+------------| -| get | ok | | | -|------------------+---------------+---------+------------| -| getFirst | ok | | | -|------------------+---------------+---------+------------| -| all | ok | | | -|------------------+---------------+---------+------------| -| setNull | ok | | | -|------------------+---------------+---------+------------| +|------------------+---------------+---------------+------------| +| method | MySQL/MariaDB | sqlite3 | postgreSQL | +|------------------+---------------+---------------+------------| +| db | ok | ok | | +|------------------+---------------+---------------+------------| +| query | ok | ok | | +|------------------+---------------+---------------+------------| +| resetQuery | ok | ok | | +|------------------+---------------+---------------+------------| +| buildQuery | ok | ok | | +|------------------+---------------+---------------+------------| +| getInstance | ok | ok | | +|------------------+---------------+---------------+------------| +| getVars | ok | ok | | +|------------------+---------------+---------------+------------| +| className | ok | ok | | +|------------------+---------------+---------------+------------| +| table | ok | ok | | +|------------------+---------------+---------------+------------| +| update | ok | ok | | +|------------------+---------------+---------------+------------| +| beginTransaction | ok | ok | | +|------------------+---------------+---------------+------------| +| rollBack | ok | ok | | +|------------------+---------------+---------------+------------| +| commit | ok | ok | | +|------------------+---------------+---------------+------------| +| add | ok | ok | | +|------------------+---------------+---------------+------------| +| save | ok | ok | | +|------------------+---------------+---------------+------------| +| delete | ok | ok | | +|------------------+---------------+---------------+------------| +| select | ok | ok | | +|------------------+---------------+---------------+------------| +| from | ok | ok | | +|------------------+---------------+---------------+------------| +| where | ok | ok | | +|------------------+---------------+---------------+------------| +| where_in | ok | ok | | +|------------------+---------------+---------------+------------| +| leftJoin | ok | ok | | +|------------------+---------------+---------------+------------| +| rightJoin | ok | not supported | | +|------------------+---------------+---------------+------------| +| innerJoin | ok | ok | | +|------------------+---------------+---------------+------------| +| and | ok | ok | | +|------------------+---------------+---------------+------------| +| or | ok | ok | | +|------------------+---------------+---------------+------------| +| groupBy | ok | ok | | +|------------------+---------------+---------------+------------| +| limit | ok | ok | | +|------------------+---------------+---------------+------------| +| orderBy | ok | ok | | +|------------------+---------------+---------------+------------| +| count | ok | ok | | +|------------------+---------------+---------------+------------| +| getById | ok | ok | | +|------------------+---------------+---------------+------------| +| search | ok | ok | | +|------------------+---------------+---------------+------------| +| get | ok | ok | | +|------------------+---------------+---------------+------------| +| getFirst | ok | ok | | +|------------------+---------------+---------------+------------| +| all | ok | ok | | +|------------------+---------------+---------------+------------| +| setNull | ok | ok | | +|------------------+---------------+---------------+------------| diff --git a/src/Libs/Database.php b/src/Libs/Database.php index 1f0254e..e52bb60 100644 --- a/src/Libs/Database.php +++ b/src/Libs/Database.php @@ -3,8 +3,11 @@ * Database - DuckBrain * * Clase diseñada para crear y devolver una única instancia PDO (database). - * Depende de manera forzada de que estén definidas las constantes: - * DB_TYPE, DB_NAME, DB_HOST, DB_USER. DB_PASS + * Hace uso de las siguientes constantes: + * DB_TYPE, DB_NAME, DB_HOST, DB_USER, DB_PASS + * + * Si DB_TYPE es sqlite, usará DB_NAME como el nombre del archivo sqlite. + * Además DB_USER y DB_PASS, no será necesariop que estén definidos. * * @author KJ * @website https://kj2.me @@ -29,7 +32,14 @@ class Database extends PDO { */ static public function getInstance() : PDO { if (is_null(self::$db)) { - $dsn = DB_TYPE.':dbname='.DB_NAME.';host='.DB_HOST; + + if (DB_TYPE == 'sqlite') { + $dsn = DB_TYPE .':'. DB_NAME; + !defined('DB_USER') && define('DB_USER', ''); + !defined('DB_PASS') && define('DB_PASS', ''); + } else + $dsn = DB_TYPE.':dbname='.DB_NAME.';host='.DB_HOST; + try { self::$db = new PDO($dsn, DB_USER, DB_PASS); } catch (PDOException $e) { @@ -38,6 +48,7 @@ class Database extends PDO { 'Error at connect to database: ' . $e->getMessage() ); } + self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); self::$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } diff --git a/src/Libs/Model.php b/src/Libs/Model.php index 32b70f6..4d4904a 100644 --- a/src/Libs/Model.php +++ b/src/Libs/Model.php @@ -733,9 +733,13 @@ class Model { static::$queryVars[':search'] = $search; $where = []; - foreach($in as $row) { - $where[] = "$row LIKE CONCAT('%', :search, '%')"; - } + if (DB_TYPE == 'sqlite') + foreach($in as $row) + $where[] = "$row LIKE '%' || :search || '%'"; + else + foreach($in as $row) + $where[] = "$row LIKE CONCAT('%', :search, '%')"; + if (static::$querySelect['where']=='') static::$querySelect['where'] = join(' OR ', $where);