FuelPHP 系列(三) ------ Model 模型
框架封装好的 model 类有几个,按需继承就好。
有:/fuel/core/classes/model/crud.php
/fuel/packages/orm/classes/model.php
/fuel/packages/orm/classes/model/soft.php 包含软删除的相关方法
/fuel/packages/orm/classes/model/nestedset.php
/fuel/packages/orm/classes/model/temporal.php
/fuel/core/classes/model.php
/fuel/packages/orm/classes/ 目录下类功能比较多,所以多数情况选择继承这个目录下的 model。
在 /fuel/app/classes/model/ 目录下,可以直接新建,也可以创建一级目录再新建。注意所有的文件名都要小写(Linux)。
一、创建 model 文件
1、在 model 目录下新建 article.php,文件中 Article 类继承 Orm\Model
class Model_Article extends Orm\Model{}
2、在 model/new/ 目录下新建 tag.php,文件中 New 类继承 Orm\Model_Soft
oil 命令: php oil g model new/tag name:varchar --no-migration 或 php oil g model new_tag name:varchar --no-migration
class Model_New_Tag extends Orm\Model_Soft{}
3、在 model 目录下新建 category.php,文件中 Category 类继承 \Model_Crud
namespace Model;class Category extends \Model_Crud{}
4、在 model/new/ 目录下新建 test.php,文件中 Test 类继承 Orm\Model_Temporal
namespace Model\New;class Test extends Orm\Model_Temporal{}
如果定义了 namespace 则在控制器中调用 Model 时,需要在 model 类名前面加命名空间或在文件最上面 use 命名空间下的类名。
use Model\New\Test;class Controller_Article extends \Controller{public function action_index(){$test = Test::forge();}}
二、设置静态属性
1、设置表名 protected static $_table_name = 'myarticles';
如果数据库表名是 model 类名去掉 ‘Model_’ 后的复数形式,则不要要设置。
2、设置主键 protected static $_primary_key = array('aid', 'bid');
如果表中主键为 id 且只有 id ,则不需要设置
3、设置表列 protected static $_properties = array('id', 'name', 'create_at', 'update_at');
也可以设置列属性,数据类型 type、标签 label、验证规则 validation、input 类型 form、默认值 default 等。
protected static $_properties = array('id','name' => array('data_type' => 'varchar','label' => 'Article Name','validation' => array('required', 'min_length' => array(3), 'max_length' => array(20)),'form' => array('type' => 'text'),'default' => 'New article',),'gender' => array('data_type' => 'varchar','label' => 'Gender','form' => array('type' => 'select', 'options' => array('m' => 'Male', 'f' => 'Female')),'validation' => array('required'),),'created_at' => array('data_type' => 'int','label' => 'Created At','form' => array('type' => false, // this prevents this field from being rendered on a form),),'updated_at' => array('data_type' => 'int', 'label' => 'Updated At'));
4、设置数据约束条件
protected static $_conditions = array('order_by' => array('id' => 'desc'),'where' => array('del_flg', '!=', 1), );
5、设置关联模型 protected static $_has_one, $_belongs_to, $_has_many, $_many_many
一对一、一对多、反向一对多、多对多
6、设置数据库 protected static $_write_connection = 'articles_master_db'; protected static $_connection = 'articles_slave_db';
在 /fuel/app/config/db.php 文件中配置数据库信息。
如果数据库设置了主从服务器,实现读写分离,则 $_write_connection
为写数据库,$_connection
为读数据库。
如果只有一个数据库,则用 $_connection
设置。
如果有关联模型,则应保证相互关联的模型有相同的读写数据库。
7、设置隐藏数据 protected static $_to_array_exclude = array( 'password', 'login_hash', 'salt‘, );
返回查询的数据时,忽略敏感信息,比如用户密码、加密规则等。
8、设置模型事件
protected static $_observers = array('Orm\Observer_CreatedAt' => array('events' => array('before_insert'),'property' => 'INS_DATE','mysql_timestamp' => false,),'Orm\Observer_UpdatedAt' => array('events' => array('before_update'),'property' => 'UPD_DATE','mysql_timestamp' => false,),);
关于 observer ,后面会有详细介绍。
转载于:https://www.cnblogs.com/rendd/p/8968228.html
FuelPHP 系列(三) ------ Model 模型相关推荐
- 机器学习-白板推导系列(三十)-生成模型(Generative Model)
机器学习-白板推导系列(三十)-生成模型(Generative Model) 30.1 生成模型的定义 前面所详细描述的模型以浅层的机器学习为主.本章将承上启下引出后面深度机器学习的部分.本小节,主要 ...
- ONNX系列三 --- 使用ONNX使PyTorch AI模型可移植
目录 PyTorch简介 导入转换器 快速浏览模型 将PyTorch模型转换为ONNX 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携 ...
- keras系列︱Sequential与Model模型、keras基本结构功能(一)
不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多. 到发文为止,已经有theano/tensorflow/CNT ...
- openvino系列 12. Model Optimizer:PaddlePaddle 模型转化 IR 模型
openvino系列 12. Model Optimizer:PaddlePaddle 模型转化 IR 模型 本案例展示了如何将 MobileNetV3 模型从 PaddleHub加载到本地,最终转换 ...
- Javascript事件模型系列(一)事件及事件的三种模型
一.开篇 在学习javascript之初,就在网上看过不少介绍javascript事件的文章,毕竟是js基础中的基础,文章零零散散有不少,但遗憾的是没有看到比较全面的系列文章.犹记得去年这个时候,参加 ...
- 4Python全栈之路系列之Django模型
Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中 ...
- 【自然语言处理】【ChatGPT系列】大模型的涌现能力
大语言模型的涌现能力 <Emergent Abilities of Large Language Models> 论文地址:https://arxiv.org/pdf/2206.07682 ...
- NLP自然语言处理系列——LDA主题词模型探析
NLP自然语言处理系列--LDA主题词模型探析 时间 2015-06-17 22:39:57 十一城elevencitys.com 原文 http://elevencitys.com/2015/0 ...
- 【yolov5系列】将模型部署到瑞芯微RK3566上面
[yolov5系列]yolov5 v6.0 环境配置.图片视频测试.模型可视化.v6.0的更新内容 [yolov5系列]yolov5的原理与核心代码解析 [yolov5系列]yolov5-onnxru ...
- LINQ快速开发设计最佳实践(二) 构建Model模型
一.摘要 第一篇文章我简要介绍了项目的设计框架和LINQ实现思想. 本篇文章将是最实际和具有技巧性的地方, 就是如何创建LINQ TO SQL 的模型对象. 二.前言 1.LINQ与LINQ TO S ...
最新文章
- 逻辑模型设计步骤-确定数据分割策略
- 《如何像证券交易员一样思考和行动》_学习笔记
- 数学--数论--因子和线性筛 (模板)
- Leetcode 771. Jewels and Stones
- xtrabackup部分备份数据库 Partial Backups
- Kai - Golang实现的目标检测云服务
- PDF Bookmark Extract1.0 release(Free Version) PDF书签抽取器(iTextSharp的利用)
- php camp,Byte Camp
- OSG 实现跟随节点的相机(转)
- 10月19日 蒟蒻的流水账
- django中处理表单实例
- 创建ipadWEB应用程序到主屏幕
- 为label或者textView添加placeHolder
- 校园网一直是连接认证服务器无响应,校园网常见问题解决办法
- Vue导出Excel表格信息
- 看了这个教程,学会快速找出三等分点
- 阿里云国际版控制台使用海外云服务器教程详解
- 除了喊话SHEIN,AllyLikes还有阿里的另一层考量
- B站UP主恰饭新思路:产品糅合进有意思的内容里
- 后端工作中遇到的问题总结(一)
热门文章
- @RestController与@RequestMapping
- JQ插件jkscroll应用到页面中的效果
- 官网下载到离线的Adobe Acrobat Reader DC
- string-indexOf、substring、split
- BZOJ 2186 SDOI2008 沙拉公主的困惑 数论
- Android之notificaction使用
- python的最受欢迎的库_年度十大最受欢迎机器学习Python库
- python自动化是什么意思_浅谈 Python 自动化
- php点击按钮变文字,点击按钮文字变成input框,点击保存变成文字的实现代码
- Linux网络编程--tcp服务器