数据库/模型
## 数据库使用
> ORM使用ThinkORM是基于PHP7.1+和PDO的ORM库。
具体使用文档请前往:[Thinkorm 文档](https://www.kancloud.cn/manual/think-orm/1257998)
----
### 配置数据库
> 根目录下的 “config/database.php” 文件中修改
```php
'default' => 'mysql',
// 数据库连接信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 主机地址
'hostname' => '127.0.0.1',
// 用户名
'username' => 'root',
// 数据库名
'password' => 'root',
'database' => 'demo',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => true,
],
],
```
### 基本使用
------------
#### 查询单个数据
// table方法必须指定完整的数据表名
```php
Db::table('think_user')->where('id', 1)->find();
```
// 如果设置了数据表前缀(prefix)参数的话 也可以使用
```php
Db::name('user')->where('id', 1)->find();
```
即使满足条件的数据有多个,find查询也只会返回一条数据。你可以使用order排序来决定返回某一条数据。
最终生成的SQL语句可能是(本手册中的示例如未说明均以MySql作为示例):
```php
SELECT * FROM `think_user` WHERE `id` = 1 LIMIT 1
```
find方法查询结果不存在,返回 null,否则返回结果数组
如果希望查询数据不存在的时候返回空数组,可以使用
// table方法必须指定完整的数据表名
```php
Db::table('think_user')->where('id', 1)->findOrEmpty();
```
如果希望在没有找到数据后抛出异常可以使用
```php
Db::table('think_user')->where('id', 1)->findOrFail();
```
------------
## 模型使用
> 模型是使用ThinkORM中的Model 库
#### 定义一个模型
此时路径为:`ROOT/app/HOME/model`
```php
namespace app\home\model;
use core\Model;
if(!defined('QZPHP_VER')) {exit('error!');}
class User extends Model
{
public function getuser($id){
$info = $this->where('id',1)->find();
return $info->toArray();
}
}
```
模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,例如:
| 模型名|约定对应数据表(假设数据库的前缀定义是 qz_)|
| -|-|
|User|qz_user|
|UserType|qz_user_type|
> #### **模型自动对应的数据表名称都是遵循小写+下划线规范,如果你的表名有大写的情况,必须通过设置模型的table属性。**
设置模型主键
```php
class User extends Model
{
protected $pk = 'uid';
}
```
如果你想指定数据表甚至数据库连接的话,可以使用:
```php
class User extends Model
{
// 设置当前模型对应的完整数据表名称
protected $table = 'think_user';
// 设置当前模型的数据库连接
protected $connection = 'db_config';
}
```
#### 字段定义
模型的数据字段和对应数据表的字段是对应的,默认会自动获取(包括字段类型),但自动获取会导致增加一次查询,因此你可以在模型中明确定义字段信息避免多一次查询的开销。
```php
class User extends Model
{
// 设置字段信息
protected $schema = [
'id' => 'int',
'name' => 'string',
'status' => 'int',
'score' => 'float',
'create_time' => 'datetime',
'update_time' => 'datetime',
];
}
```