当前位置: 首页 > news >正文

17.模型的定义

学习要点:
1.默认设置
2.模型定义
本节课我们来开始学习数据库的模型部分的定义和默认值的设置。
一.默认设置
1. 框架可以使用 Eloquent ORM 进行数据库交互,也就是关系对象模型;
2. 在数据库入门阶段,我们已经创建了一个 User.php 模型,如下:
php artisan make:model Http/Models/User //默认在 app 目录
3. 而调用的时候,我们也知道表名要遵循它默认规则,修改为复数,或特定;

class User extends Model
{
protected $table = 'user';
}


4. 系统假定你的主键为 id,如果你要修改默认主键,可以特定;
protected $primaryKey = 'xid';
5. 系统假定你的主键 id 为自增性,意味着是主键会自动转换 int 类型;
6. 如果你希望不是非自增,非数值类型主键,可以设置取消;
public $incrementing = false;
7. 如果你主键不是一个整数,那么需要$keyType 设置为 string;
protected $keyType = 'string';
8. 系统默认情况下会接管 created_at 和 updated_at 两个时间戳列;
9. 如果不想让系统干涉这两个列,可以设置 false 取消;
public $timestamps = false;
10. 如果你想自定义时间戳的格式,可以设置;
protected $dateFormat = 'U';
11. 可以更改创建时间 created_at 和更新时间 updated_at 字段名;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
12. 默认读取 database.php 配置的数据库连接,也可以在模型端局部更改;
protected $connection = 'mysql';
二.模型定义
1. 之前在查询构造器部分,把常用的数据库操作基本讲完,模型大体相同;
2. 比如,我们要查询所有数据,直接使用模型::all()即可;

//查询所有记录
$users = User::get(); //或 all()
return [$users];


3. 也可以像查询构造器一样,添加各种各样的条件,写法一样;

//查询性别为男,价格大于 90,限制显示 2 条
$users = User::where([
['gender', '=', '男'],
['price', '>', 95]
])->limit(2)->get();


4. 虽然安装了插件,但模型还是没有代码提示,可以通过安装插件解决;
composer require barryvdh/laravel-ide-helper
php artisan ide-helper:generate – 为 Facades 生成注释
php artisan ide-helper:models – 为数据模型生成注释
php artisan ide-helper:meta – 生成 PhpStorm Meta file
5. 其它查询方法基本和查询构造器一样,如果有不一样,参考错误提示;
6. 这里列出官网给出示例的方法,对照实验(结合详细文档,重复较多);
(1) .find(1) //通过主键查找
(2) .first() //查找第一个
(3) .firstWhere() //找到查询中的首个
(4) .find([1,2,3]) //通过数组查找
(5) .firstOr() //查找首个返回,支持闭包
(6) .firstOrFail() //找不到时返回异常
(7) .count()、max()等集合 //集合操作
PS:还有很多在查询构造器中的方法,比如排序、分组子查询等等都可以使用(并未一一验证)。

http://www.lryc.cn/news/67775.html

相关文章:

  • golang 记录交叉编译sqlite的报错信息 go build -ldflags
  • ChatGPT AI使用成本
  • 腾讯云与中电金信发布联合核心方案
  • 老胡的周刊(第090期)
  • 2023-数仓常见问题以及解决方案
  • 没关系,前端还死不了
  • OpenSSL-基于IP或域名生成自签名证书脚本
  • 如何在C#中创建和使用自定义异常
  • 通过systemctl管理服务
  • 面经|小红书经营分析师
  • abpvnext后台工作者使用quartz扩展的一些思路和使用细节记录--(未完待续)
  • 提升应届生职场竞争力:有效策略和关键推动因素
  • PBDB Data Service:List of fossil collections(化石采集记录列表)
  • centos安装SNB服务
  • 课程《JavaWeb基础框架程序设计》考试题下篇——数据库与表单操作用题(人事管理平台的添加员工档案信息的操作题)
  • Linux-初学者系列——篇幅4_系统运行相关命令
  • 无缝集成:利用Requests库轻松实现数据抓取与处理
  • 几种内部排序算法的cpp代码实现与分析
  • 第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)
  • 给大家介绍四款最受欢迎的抓包神器
  • 解决Reids过期方案 游标遍历清除Redis过期的key
  • K8s基础10——数据卷、PV和PVC、StorageClass动态补给、StatefulSet控制器
  • oracle系统查询~3
  • Mybatis源码(九)— chche
  • 回溯法--N皇后问题
  • ajax请求
  • K8S系列之污点和容忍度详细分析
  • 【算法】Minimum Moves to Move a Box to Their Target Location 推箱子
  • 决策引擎平台建设方案
  • SpringBoot Starter 作用及原理