codethereal / sqlite-php
该包最新版本(v2.0.0)没有提供许可证信息。
v2.0.0
2021-10-26 23:12 UTC
Requires
- php: ^8.0
- ext-sqlite3: *
README
PHP的数据库驱动程序和查询构建库
composer require dogukanakkaya/dawn-db
包含自动加载文件
include_once __DIR__ . "/vendor/autoload.php";
要使用sqlite,您必须创建一个名为 data.db 的新数据库文件,然后从 Sqlite 类创建一个新实例。您必须将文件路径提供给构造函数。
$sqlite = new Codethereal\Database\Driver\Sqlite('data.db'); $db = $sqlite->getQueryBuilder();
以下示例仅适用于Sqlite驱动程序。
读取
$resultSingle = $db->select('name,email,password')->getSingle('users'); // SELECT name,email,password FROM posts LIMIT 1 $result = $db->select('name,email,password')->get('users'); // SELECT name,email,password FROM posts # For mode 1: it returns you an array with db column keys # For mode 2: it returns you an array with index numbers # For mode 3: it returns you an array with both column keys and index numbers ###*** You must use while loop on returned result, if you want you get only one record ***### while ($row = $result->fetchArray(1)) { echo "<pre>"; print_r($row); echo "</pre>"; }
- 您还应该在
$resultSingle上调用fetchArray(1)方法。
Where
# Allowed where operators are: ['=', '>', '<', '>=', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN'] $db->where('id', 2)->get('users'); // SELECT * FROM users WHERE id = 2 $db->where('id', '>', 2)->get('users'); // SELECT * FROM users WHERE id > 2 $db ->where('id', '>', 2) ->where('name', 'codethereal') ->get('users'); // SELECT * FROM users WHERE id > 2 AND name = 'codethereal'
或 Where
$db->select('name,email') ->where('id', 5) ->orWhere('name', 'codethereal') ->getSingle('users'); // SELECT name,email FROM users WHERE id = 5 OR name = 'dogukan' LIMIT 1
嵌套 Where
$db->select('name,email') ->where('id', 5) ->orWhere(function (\Codethereal\Database\Builder\Query $query) { return $query ->where('name', 'codethereal') ->where('email', 'i@codethereal.com'); }) ->orWhere('name', 'codethereal') ->getSingle('users'); // SELECT name,email FROM users WHERE id = 5 OR (name = 'dogukan' AND email = 'i@codethereal.com') OR name = 'codethereal' LIMIT 1
Where In/Not In
$db->in('id', [1, 2])->get('users'); // SELECT * FROM users WHERE id IN (1,2) $db->notIn('id', [1, 2])->get('users'); // SELECT * FROM users WHERE id NOT IN (1,2)
Where Like/Not Like
$db->where('name', 'LIKE', 'Dogukan%')->get('users'); // SELECT * FROM users WHERE name LIKE 'Dogukan%' $db->where('name', 'NOT LIKE', '%Codethereal%')->get('users'); // SELECT * FROM users WHERE name LIKE '%Codethereal%'
Order By
$db->orderBy('name', 'ASC')->get('users'); // SELECT * FROM users ORDER BY name ASC
连接
# Available join methods for sqlite are: ['INNER', 'CROSS', 'LEFT (OUTER)'] $db->select('users.name as userName, posts.name as postName')->join('users', 'users.id = posts.user_id', 'CROSS')->get('posts'); $db->select('users.name as userName, posts.name as postName')->join('users', 'users.id = posts.user_id', 'INNER')->get('posts');
Count
$db->where('views', '>', 10)->count('posts'); // SELECT COUNT(*) as count FROM posts
- 您应该调用此处的
fetchArray(1)方法并获取计数别名。
创建
$db->insert('users', ['name' => 'Dogukan Akkaya', 'email' => 'doguakkaya27@gmail.com']); // INSERT INTO users (name, email) VALUES ('Dogukan Akkaya', 'doguakkaya27@gmail.com') | Returns insert id on success
更新
$db->where('id', 1)->update('users', ['name' => 'Dogukan Akkaya | Codethereal', 'email' => 'doguakkaya27@codethereal.com']); // UPDATE users SET name = 'Dogukan Akkaya | Codethereal', email = 'doguakkaya27@codethereal.com' WHERE id = 1
删除
$db->where('id', 1)->delete('users'); // DELETE FROM users WHERE id = 1
事务
# You don't have to wrap with try-catch block. It will rollback on any error $sqlite->transBegin(); $id = $db->insert('users', ['name' => 'Codethereal', 'email' => 'info@codethereal.com']); $db->insert('postss', ['name' => 'New post', 'user_id' => $id]); $sqlite->transCommit();