框架封装好的 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 模型相关推荐

  1. 机器学习-白板推导系列(三十)-生成模型(Generative Model)

    机器学习-白板推导系列(三十)-生成模型(Generative Model) 30.1 生成模型的定义 前面所详细描述的模型以浅层的机器学习为主.本章将承上启下引出后面深度机器学习的部分.本小节,主要 ...

  2. ONNX系列三 --- 使用ONNX使PyTorch AI模型可移植

    目录 PyTorch简介 导入转换器 快速浏览模型 将PyTorch模型转换为ONNX 摘要和后续步骤 参考文献 下载源547.1 KB 系列文章列表如下: ONNX系列一 --- 带有ONNX的便携 ...

  3. keras系列︱Sequential与Model模型、keras基本结构功能(一)

    不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多. 到发文为止,已经有theano/tensorflow/CNT ...

  4. openvino系列 12. Model Optimizer:PaddlePaddle 模型转化 IR 模型

    openvino系列 12. Model Optimizer:PaddlePaddle 模型转化 IR 模型 本案例展示了如何将 MobileNetV3 模型从 PaddleHub加载到本地,最终转换 ...

  5. Javascript事件模型系列(一)事件及事件的三种模型

    一.开篇 在学习javascript之初,就在网上看过不少介绍javascript事件的文章,毕竟是js基础中的基础,文章零零散散有不少,但遗憾的是没有看到比较全面的系列文章.犹记得去年这个时候,参加 ...

  6. 4Python全栈之路系列之Django模型

    Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中 ...

  7. 【自然语言处理】【ChatGPT系列】大模型的涌现能力

    大语言模型的涌现能力 <Emergent Abilities of Large Language Models> 论文地址:https://arxiv.org/pdf/2206.07682 ...

  8. NLP自然语言处理系列——LDA主题词模型探析

    NLP自然语言处理系列--LDA主题词模型探析 时间 2015-06-17 22:39:57  十一城elevencitys.com 原文  http://elevencitys.com/2015/0 ...

  9. 【yolov5系列】将模型部署到瑞芯微RK3566上面

    [yolov5系列]yolov5 v6.0 环境配置.图片视频测试.模型可视化.v6.0的更新内容 [yolov5系列]yolov5的原理与核心代码解析 [yolov5系列]yolov5-onnxru ...

  10. LINQ快速开发设计最佳实践(二) 构建Model模型

    一.摘要 第一篇文章我简要介绍了项目的设计框架和LINQ实现思想. 本篇文章将是最实际和具有技巧性的地方, 就是如何创建LINQ TO SQL 的模型对象. 二.前言 1.LINQ与LINQ TO S ...

最新文章

  1. 逻辑模型设计步骤-确定数据分割策略
  2. 《如何像证券交易员一样思考和行动》_学习笔记
  3. 数学--数论--因子和线性筛 (模板)
  4. Leetcode 771. Jewels and Stones
  5. xtrabackup部分备份数据库 Partial Backups
  6. Kai - Golang实现的目标检测云服务
  7. PDF Bookmark Extract1.0 release(Free Version) PDF书签抽取器(iTextSharp的利用)
  8. php camp,Byte Camp
  9. OSG 实现跟随节点的相机(转)
  10. 10月19日 蒟蒻的流水账
  11. django中处理表单实例
  12. 创建ipadWEB应用程序到主屏幕
  13. 为label或者textView添加placeHolder
  14. 校园网一直是连接认证服务器无响应,校园网常见问题解决办法
  15. Vue导出Excel表格信息
  16. 看了这个教程,学会快速找出三等分点
  17. 阿里云国际版控制台使用海外云服务器教程详解
  18. 除了喊话SHEIN,AllyLikes还有阿里的另一层考量
  19. B站UP主恰饭新思路:产品糅合进有意思的内容里
  20. 后端工作中遇到的问题总结(一)

热门文章

  1. @RestController与@RequestMapping
  2. JQ插件jkscroll应用到页面中的效果
  3. 官网下载到离线的Adobe Acrobat Reader DC
  4. string-indexOf、substring、split
  5. BZOJ 2186 SDOI2008 沙拉公主的困惑 数论
  6. Android之notificaction使用
  7. python的最受欢迎的库_年度十大最受欢迎机器学习Python库
  8. python自动化是什么意思_浅谈 Python 自动化
  9. php点击按钮变文字,点击按钮文字变成input框,点击保存变成文字的实现代码
  10. Linux网络编程--tcp服务器