patrick-barreto / data-base
基本ORM,用于操作数据库并在模型类中进行CRUD操作变得非常简单
Requires
- php: >=7.0
- patrick-barreto/exception: ^1.0.0
This package is auto-updated.
Last update: 2024-10-01 00:25:54 UTC
README
如果您没有带有数据库的PHP环境,可以使用此Docker环境:https://github.com/PatrickBarreto/baseBackend
此代码的下一步是
- 实现基本DDL命令(CREATE、DROP、TRUNCATE、ALTER)
如果您有想法或pull request要提交,请提交。我们非常欢迎想法。
如何安装
composer require patrick-barreto/data-base
.env
您需要填写环境变量。如果想要简化,可以使用https://packagist.org.cn/packages/patrick-barreto/dot-env
DotEnv\DotEnv::fill(PATH_.ENV_FILE);
如何使用
仓库
//Model class Users extends DataBaseCorrespondence { private static string $table = 'users'; public static function getTable(){ return self::$table; } public function getProperty($property){ return $this->$property; } } //Repository class UserRepository extends Repository{ public function findUsers() { return $this->select()->setFields(['id', 'name', 'email', 'phone']) ->fetchObject(false, $this->getDtoPath()); } } //Using in Controller for exemple class Users { use UserRepository; use Users; public function findUsers() { //This will be and instance of UserRepository, class responsable to provide methods of User Object. $usersRepository = new UserRepository(new Users); //This will return an instance of Users. $users = $usersRepository->findUsers(); } }
使用Crud实例
<?php namespace Your\NameSpace use DataBase\Crud; $homens = new Crud('homens'); $mulheres = new Crud('mulheres'); $animais = new Crud('animais'); $homens->insert->setFields(['name'])->setValues([["Pedro"],["João"],["Paulo"]])->runQuery(); $mulheres->insert->setFields(['name'])->setValues([["Maria"],["Ana"],["Marcia"]])->runQuery(); $animais->insert->setFields(['name'])->setValues([["Gato"],["Cachorro"],["Papagaio"]])->runQuery(); $mulheres->select->setFields(['homens.name as homemName, mulheres.name as mulherName']) ->setInnerJoin(['table' => 'homens'], ['table' => 'mulheres'] ) ->setWhere('homens.name = "João"');
使用Command实例
<?php namespace Your\NameSpace use DataBase\Actions\DML\Commands\Select; $select = new Select; $select->setTable('tableName'); $select->setWhereIn('nome', ['pedro', 'joão', 'josé']); $select->fetchAssoc(true);
使用Query类
重要:请注意,在这里您可以控制要运行的内容。应用程序不会做任何事情,只会执行查询。
<?php namespace Your\NameSpace use DataBase\Query; $sql = "SELECT * FROM teste"; $query = new Query; $result = $query->runQuery($sql)->fetchAll(PDO::FETCH_ASSOC);
DML命令类资源
手动实例化或直接使用Crud实例时,情况相同
对所有下级类通用
此方法负责检查在继承此类实例的类中是否设置了表名
public function getTableName()
此方法负责在继承此类实例的类中设置表名
public function setTable(string $tableName)
此方法负责为继承此类实例的类中的查询设置简单Where条件
public function setWhere(string $condition)
此方法负责为继承此类实例的类中的查询设置Where In条件
public function setWhereIn(string $column, array $options)
此方法负责连接Inner Join命令
public function setInnerJoin(array $joinedTable, array $newTableJoin)
此方法负责连接Right Join命令
public function setRightJoin(array $joinedTable, array $newTableJoin)
此方法负责连接Left Join命令
public function setLeftJoin(array $joinedTable, array $newTableJoin)
此方法负责连接Full Join命令
public function setFullJoin(array $newTableJoin)
此方法负责连接Cross Join命令
public function setCrossJoin(array $newTableJoin)
Select
DataBase\Actions\DML\Commands\Select
设置distinct选项,默认为false
public function setDistinct(bool $requiereDistinct)
设置fields选项,默认为'*'
public function setFields(array $fields)
设置limit选项
public function setLimit(int $limit, int $offset = 0)
设置order选项,ASC或DESC
public function setOrder(string $fields, string $order = "ASC")
设置group by选项
public function setGroupBy(array $fields)
设置having选项
public function setHaving(string $condition)
为Select查询构建查询语句
public function buildQuery(bool $subquery = false)
此方法负责以关联数组的形式返回数据
public function fetchAssoc(bool $returnAll = false)
此方法负责以类类型的对象返回数据。默认为stdClass
public function fetchObject(bool $returnAll = false, string $class = stdClass::class)
Insert
DataBase\Actions\DML\Commands\Insert
设置ignore选项,默认为false
public function setIgnore(bool $requiereIgnore)
设置fields选项,默认为false
public function setFields(array $fields)
设置values选项,默认为false
public function setValues(array $values)
使用SELECT查询设置values
public function setInsertSelect(string $query)
为Insert查询构建查询语句
public function buildQuery()
此方法负责运行类查询而不检索结果。
public function runQuery()
Update
DataBase\Actions\DML\Commands\Update
此方法负责为Update查询设置SET命令
public function setSet(array $columnValue)
为Update查询构建查询语句
public function buildQuery()
此方法负责运行类查询而不检索结果。
public function runQuery()
Delete
DataBase\Actions\DML\Commands\Delete
为删除查询构建查询语句
public function buildQuery()
此方法负责运行类查询而不检索结果。
public function runQuery()