一.默认设置

  1. 框架可以使用 Eloquent ORM 进行数据库交互,也就是关系对象模型;

  2. 在数据库入门阶段,我们已经创建了一个 User.php 模型,如下:
    php artisan make:model Http/Models/User //默认在 app 目录

  3. 而调用的时候,我们也知道表名要遵循它默认规则,修改为复数,或特定;

class User extends Model { protected $table = 'user';
}
  1. 系统假定你的主键为 id,如果你要修改默认主键,可以特定;
protected $primaryKey = 'xid';
  1. 系统假定你的主键 id 为自增性,意味着是主键会自动转换 int 类型;

  2. 如果你希望不是非自增,非数值类型主键,可以设置取消;

public $incrementing = false;
  1. 如果你主键不是一个整数,那么需要$keyType 设置为 string;
protected $keyType = 'string';
  1. 系统默认情况下会接管 created_at 和 updated_at 两个时间戳列;

  2. 如果不想让系统干涉这两个列,可以设置 false 取消;

 public $timestamps = false;
  1. 如果你想自定义时间戳的格式,可以设置;
protected $dateFormat = 'U';
  1. 可以更改创建时间 created_at 和更新时间 updated_at 字段名;
const CREATED_AT = 'create_time';
const UPDATED_AT = 'update_time';
  1. 默认读取 database.php 配置的数据库连接,也可以在模型端局部更改;
protected $connection = 'mysql';

二.模型定义

  1. 之前在查询构造器部分,把常用的数据库操作基本讲完,模型大体相同;
  2. 比如,我们要查询所有数据,直接使用模型::all()即可;
//查询所有记录
$users = User::get(); //或 all()
return [$users];
  1. 也可以像查询构造器一样,添加各种各样的条件,写法一样;
//查询性别为男,价格大于 90,限制显示 2 条
$users = User::where([ ['gender', '=', '男'], ['price', '>', 95] ])->limit(2)->get();

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

十七、PHP框架Laravel学习笔记——模型的定义相关推荐

  1. 三十、PHP框架Laravel学习笔记——模型的预加载

    一.预加载 预加载,就是解决关联查询中产生的 N+1 次查询带来的资源消耗 我们要获取所有书籍的作者(或拥有者),普通查询方案如下: //获取所有书籍列表 $books = Book::all(); ...

  2. 十八、PHP框架Laravel学习笔记——模型的增删改

    一.增删改操作 新增方法如下,注意:默认模型接管 created_at 和 updated_at: $users = new User(); $users->username = '辉夜'; $ ...

  3. 二十七、PHP框架Laravel学习笔记——模型的多对多关联

    二.多对多关联 多对多关联,比前面两种要复杂一些,需要一张中间表,共三张: (1) .users:用户表: (2) .roles:权限表: (3) .role_user:中间表:默认表名,user_i ...

  4. 二十八、PHP框架Laravel学习笔记——模型的关联查询

    二.关联查询 前几篇博文,了解了三种基础的关联模型,并简单的进行查询: 本节课,我们详细的了解更多的查询方案: //下面两种查询是一样的: $books = User::find(19)->bo ...

  5. 二十六、PHP框架Laravel学习笔记——模型的一对多关联

    二.一对多关联 一对多关联,本质上使用方法和一对一关联类似,内部实现略有不同: 创建另一个模型:book.php,我们看下这个表数据: PS:这里 user_id=19 有三个,也就是蜡笔小新有三本书 ...

  6. 二十五、PHP框架Laravel学习笔记——模型的一对一关联

    一.关联概念 关联模型,即:两张或以上的表进行一定规则的绑定关联: 比如:一个学生(学生表)对应一张个人信息卡(信息表),这种就是一对一: 再比如:一篇博文(帖子表)对应多个评论(评论表),这种就是一 ...

  7. 二十四、PHP框架Laravel学习笔记——模型的数据集合

    一.数据集合 数据集合,就是已经将模型方法 get()获取到的数据再进行处理: 比如:map()方法,通过它可以实现类似访问器一样对字段进行处理的效果: $users = User::get(); / ...

  8. 二十、PHP框架Laravel学习笔记——模型的作用域

    一.本地作用域 很多情况下,我们在数据查找时有一部分条件会被重复且大量使用: 而这个条件,可能只是在这个模型对应的数据表使用,别的表并不使用: 那么这种情况,可以使用本地作用域的方式,将常用的 SQL ...

  9. 二十一、PHP框架Laravel学习笔记——模型的访问器和修改器

    一.访问器 访问器:就是在获取数据列表时,拦截属性并对属性进行修改的过程: 比如,我们在输出性别时,在性别左右加上括号,或给邮件转换为大写: //访问器,前固定 get,后固定 Attribute,G ...

最新文章

  1. 网站SEO优化之如何提升网站的流量?
  2. 为什么报表里面记录的创建时间 比我们电脑客户端的世界时间 隔8个小时?这个是什么原因?...
  3. STM32下载程序时的一个奇怪现象
  4. ATDD验收测试驱动开发
  5. ArrayList clone()– ArrayList深拷贝和浅拷贝
  6. Spring aop优雅实现redis分布式锁 aop应用redis分布式锁
  7. 一个简单WCF项目的建立 by wsz
  8. 《学习之道》第十章方法空间能力是可以后天形成的
  9. php session不可用,php session 使用与安全
  10. 未来的云计算基础设施长什么样?
  11. python提取身份证信息_Python3 简单抓取身份证地址信息
  12. stagefright_StageFright:Android操作系统中最易受攻击的错误
  13. css属性的书写顺序
  14. athletes 表包含运动员姓名,年纪和代表国家。下面哪个查询可以找出代表每个国家最年轻的运动员情况?
  15. 监控工具普罗米修斯(Prometheus)的介绍与安装
  16. mysql 高并发 响应时间_高并发,你真的了解吗?
  17. 利用声音传感器控制led灯功能_树莓派 LED+蜂鸣+声音传感器+红外模块组合打造声控/红外控制LED...
  18. 获取商品ID下所有的sku精准库存api
  19. vpb vs2008 编译
  20. C/C++个人帐本管理系统

热门文章

  1. html里写js ajax吗,js、ajax、jquery的区别是什么?
  2. 玩Linux碰到的问题以及使用技巧总结
  3. java futuretask 实例_java 使用Callable+FutureTask获取执行结果
  4. DLL导出函数名称改编的解决方法
  5. Linux: I/O多路转接之epoll(有图有代码有真相!!!)
  6. C++远航之封装篇——析构函数
  7. 关注 Imagine Cup 2010, 参与软件设计“最具人气奖”投票
  8. 线程属性 pthread_attr_t
  9. Vue-watch选项
  10. html5移动端制作知识点总结