十七、PHP框架Laravel学习笔记——模型的定义
一.默认设置
框架可以使用 Eloquent ORM 进行数据库交互,也就是关系对象模型;
在数据库入门阶段,我们已经创建了一个 User.php 模型,如下:
php artisan make:model Http/Models/User //默认在 app 目录
而调用的时候,我们也知道表名要遵循它默认规则,修改为复数,或特定;
class User extends Model { protected $table = 'user';
}
- 系统假定你的主键为 id,如果你要修改默认主键,可以特定;
protected $primaryKey = 'xid';
系统假定你的主键 id 为自增性,意味着是主键会自动转换 int 类型;
如果你希望不是非自增,非数值类型主键,可以设置取消;
public $incrementing = false;
- 如果你主键不是一个整数,那么需要$keyType 设置为 string;
protected $keyType = 'string';
系统默认情况下会接管 created_at 和 updated_at 两个时间戳列;
如果不想让系统干涉这两个列,可以设置 false 取消;
public $timestamps = false;
- 如果你想自定义时间戳的格式,可以设置;
protected $dateFormat = 'U';
- 可以更改创建时间 created_at 和更新时间 updated_at 字段名;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
- 默认读取 database.php 配置的数据库连接,也可以在模型端局部更改;
protected $connection = 'mysql';
二.模型定义
- 之前在查询构造器部分,把常用的数据库操作基本讲完,模型大体相同;
- 比如,我们要查询所有数据,直接使用模型::all()即可;
//查询所有记录
$users = User::get(); //或 all()
return [$users];
- 也可以像查询构造器一样,添加各种各样的条件,写法一样;
//查询性别为男,价格大于 90,限制显示 2 条
$users = User::where([ ['gender', '=', '男'], ['price', '>', 95] ])->limit(2)->get();
- 虽然安装了插件,但模型还是没有代码提示,可以通过安装插件解决;
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
- 其它查询方法基本和查询构造器一样,如果有不一样,参考错误提示;
- 这里列出官网给出示例的方法,对照实验(结合详细文档,重复较多);
(1) .find(1) //通过主键查找
(2) .first() //查找第一个
(3) .firstWhere() //找到查询中的首个
(4) .find([1,2,3]) //通过数组查找
(5) .firstOr() //查找首个返回,支持闭包
(6) .firstOrFail() //找不到时返回异常
(7) .count()、max()等集合 //集合操作
PS:还有很多在查询构造器中的方法,比如排序、分组子查询等等都可以使用(并未一一验证)。
十七、PHP框架Laravel学习笔记——模型的定义相关推荐
- 三十、PHP框架Laravel学习笔记——模型的预加载
一.预加载 预加载,就是解决关联查询中产生的 N+1 次查询带来的资源消耗 我们要获取所有书籍的作者(或拥有者),普通查询方案如下: //获取所有书籍列表 $books = Book::all(); ...
- 十八、PHP框架Laravel学习笔记——模型的增删改
一.增删改操作 新增方法如下,注意:默认模型接管 created_at 和 updated_at: $users = new User(); $users->username = '辉夜'; $ ...
- 二十七、PHP框架Laravel学习笔记——模型的多对多关联
二.多对多关联 多对多关联,比前面两种要复杂一些,需要一张中间表,共三张: (1) .users:用户表: (2) .roles:权限表: (3) .role_user:中间表:默认表名,user_i ...
- 二十八、PHP框架Laravel学习笔记——模型的关联查询
二.关联查询 前几篇博文,了解了三种基础的关联模型,并简单的进行查询: 本节课,我们详细的了解更多的查询方案: //下面两种查询是一样的: $books = User::find(19)->bo ...
- 二十六、PHP框架Laravel学习笔记——模型的一对多关联
二.一对多关联 一对多关联,本质上使用方法和一对一关联类似,内部实现略有不同: 创建另一个模型:book.php,我们看下这个表数据: PS:这里 user_id=19 有三个,也就是蜡笔小新有三本书 ...
- 二十五、PHP框架Laravel学习笔记——模型的一对一关联
一.关联概念 关联模型,即:两张或以上的表进行一定规则的绑定关联: 比如:一个学生(学生表)对应一张个人信息卡(信息表),这种就是一对一: 再比如:一篇博文(帖子表)对应多个评论(评论表),这种就是一 ...
- 二十四、PHP框架Laravel学习笔记——模型的数据集合
一.数据集合 数据集合,就是已经将模型方法 get()获取到的数据再进行处理: 比如:map()方法,通过它可以实现类似访问器一样对字段进行处理的效果: $users = User::get(); / ...
- 二十、PHP框架Laravel学习笔记——模型的作用域
一.本地作用域 很多情况下,我们在数据查找时有一部分条件会被重复且大量使用: 而这个条件,可能只是在这个模型对应的数据表使用,别的表并不使用: 那么这种情况,可以使用本地作用域的方式,将常用的 SQL ...
- 二十一、PHP框架Laravel学习笔记——模型的访问器和修改器
一.访问器 访问器:就是在获取数据列表时,拦截属性并对属性进行修改的过程: 比如,我们在输出性别时,在性别左右加上括号,或给邮件转换为大写: //访问器,前固定 get,后固定 Attribute,G ...
最新文章
- 网站SEO优化之如何提升网站的流量?
- 为什么报表里面记录的创建时间 比我们电脑客户端的世界时间 隔8个小时?这个是什么原因?...
- STM32下载程序时的一个奇怪现象
- ATDD验收测试驱动开发
- ArrayList clone()– ArrayList深拷贝和浅拷贝
- Spring aop优雅实现redis分布式锁 aop应用redis分布式锁
- 一个简单WCF项目的建立 by wsz
- 《学习之道》第十章方法空间能力是可以后天形成的
- php session不可用,php session 使用与安全
- 未来的云计算基础设施长什么样?
- python提取身份证信息_Python3 简单抓取身份证地址信息
- stagefright_StageFright:Android操作系统中最易受攻击的错误
- css属性的书写顺序
- athletes 表包含运动员姓名,年纪和代表国家。下面哪个查询可以找出代表每个国家最年轻的运动员情况?
- 监控工具普罗米修斯(Prometheus)的介绍与安装
- mysql 高并发 响应时间_高并发,你真的了解吗?
- 利用声音传感器控制led灯功能_树莓派 LED+蜂鸣+声音传感器+红外模块组合打造声控/红外控制LED...
- 获取商品ID下所有的sku精准库存api
- vpb vs2008 编译
- C/C++个人帐本管理系统
热门文章
- html里写js ajax吗,js、ajax、jquery的区别是什么?
- 玩Linux碰到的问题以及使用技巧总结
- java futuretask 实例_java 使用Callable+FutureTask获取执行结果
- DLL导出函数名称改编的解决方法
- Linux: I/O多路转接之epoll(有图有代码有真相!!!)
- C++远航之封装篇——析构函数
- 关注 Imagine Cup 2010, 参与软件设计“最具人气奖”投票
- 线程属性 pthread_attr_t
- Vue-watch选项
- html5移动端制作知识点总结