Thinkphp 6.0模型的字段设置

文章讲述了如何在模型中设置和优化字段属性,包括通过$schema定义字段信息以减少内存开销,使用命令生成字段信息缓存,以及开启字段缓存以提升效率。同时讨论了字段的获取和赋值操作,以及大小写敏感性的设置。
摘要由CSDN通过智能技术生成

本节课我们来学习模型中的字段属性的设置方式。

一.字段设置

1. 模型的数据字段和表字段是对应关系,默认会自动获取,包括字段的类型;

2. 自动获取会导致增加一次查询,如果在模型中配置字段信息,会减少内存开销;

3. 可以在模型设置$schema 字段,明确定义字段信息,字段需要对应表写完整;

//设置字段信息,需要写完整的数据表字段
protected $schema = [
    'id' => 'int',
    'username' => 'string',
    'status' => 'int',
    'create_time' => 'datetime',
    '...' => '...'
];

4. 系统提供了一条命令,生成一个字段信息缓存,可以自动生成;

php think optimize:schema

5. 生成后的字段缓存文件在 runtime 下 schema 文件加下;

6. 我们可以先把这里的键值对复制到$schema 属性上,开启 trace 测试效果;

7. 这时,在控制器执行查询,会发现减少了一次 SQL 查询;

8. 只不过,大可不必设置$schema 属性,因为它只对模型有效;

9. 如果想模型和数据库 Db 类同时有效,直接运用字段缓存文件即可;

10. 默认情况下字段缓存文件是关闭状态,需要在 config/database.php 开启;

// 开启字段缓存
'fields_cache' => true, 

11. 当数据获取到后,想要单独获取数据可以用->和数组方式来获取;

$user = UserModel::find(19);
echo $user->username;
echo $user['email'];

12. 如果我们在模型端把数据整理好,交给控制器直接调用,如下方式:

//模型端
public function getUsername($id)
{
    $obj = $this->find($id);
    return $obj->getAttr('username');
}
//控制器端调用
$user = new UserModel();
return $user->getUsername(19);

13. 字段的赋值操作,也可以是->和数组方式,作用就是提交给模型处理;

$user = new UserModel();
$user->username = 'Mr.Lee';
$user['email'] = 'lee@163.com';

14. 默认情况下,字段是严格区分大小写的,也就是需要和数据表字段保持一致;

echo $user->create_time;

15. 我们可以在模型属性$strict 设置为 false 即可实现非严格字段;

echo $user->createTime; 
//并非肆无忌惮的不严格,只能首字母大写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值