精华内容
下载资源
问答
  • Tp 模型

    千次阅读 2018-01-24 21:55:26
    模型承载的是所有的业务逻辑,model层, 而controller层更偏像于编程语言中的控制结构,model层负责具体的功能的实现,而controller负责将一个个功能按照一定的要求一定的顺序组织在一起,所以C层一般是整个项目的脉络,...

    模型承载的是所有的业务逻辑,model层,

    而controller层更偏像于编程语言中的控制结构,model层负责具体的功能的实现,而controller负责将一个个功能按照一定的要求一定的顺序组织在一起,所以C层一般是整个项目的脉络,而M更像是具体的血肉,V层是血肉外面的皮肤

    model层复制逻辑代码的具体实现,但有的时候业务的结构比较复杂,全写在model层可能显得比较臃肿混乱,那么我们就再将他细分,我们可以将model层分为 model ,logic,services 三个文件夹,model层是首选,具体的我们可以按照个人习惯,按照我的习惯,我将对表的增删改查这类比较直白的需求,放到model层,然后将对他基础进行的个性化处理放到 logic 或者 service中.

    展开全文
  • TP模型转换中,均匀采样法通常采样的超网格点均等分布,因此在采样步骤不进行微调时,采样结果经常会忽略局部极值。然后将所得张量用于控制器设计尽管增益是线性矩阵不等式的可行解,但它不能完全覆盖状态空间。...
  • 使用 TP 模型转换,可以考虑不同的优化和凸性约束,并且可以在合理的时间内执行转换而无需任何分析交互(无论模型是否以物理考虑产生的分析方程的形式给出,作为基于软计算的识别技术(如神经网络或基于模糊逻辑的...
  • TP模型查询结果类型

    2018-07-26 14:48:05
    正常来说,使用模型查询返回的是模型对象, 但是如果使用了模型关联的,返回的就是一个数据集对象, 所以使用的时候要注意

    正常来说,使用模型查询,select返回数据集,find返回模型对象
    关联方式的不同返回的格式也不一样
    所以使用的时候要注意

    展开全文
  • TP模型连贯操作cache方法用于select、find和getField方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据。第一次查询结果会被缓存,第二次查询相同的...
    TP模型连贯操作cache方法用于select、find和getField方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据。
    
    第一次查询结果会被缓存,第二次查询相同的数据的时候就会直接返回缓存中的内容,而不需要再次进行数据库查询操作。

    默认情况下, 缓存有效期和缓存类型是由DATA_CACHE_TIME和DATA_CACHE_TYPE配置参数决定的,但cache方法可以单独指定。

    例如:
    $Model->where('id=5')->cache(true)->find(); // 自动命名缓存ID,使用系统默认DATA_CACHE_TIME(0=永久有效)
    $Model->cache('key',60)->find(); // 自定义缓存ID,60秒后失效

    问题:
    缓存有效期当然是越久越好,所以默认DATA_CACHE_TIME=0,也就是永久有效。那么问题来了,数据表增删改操作后,如何使查询缓存的数据更新呢?
    用S('key',null),那不行,因为查询中用了cache(true),你根本不知道key的具体值,而且如果查询中包含了动态的where查询,那可能会产生多个缓存。

    如果设置了缓存有效期cache(true,5),也就是5秒后没有命中该查询缓存的话,缓存会自动失效。这是比较简单的两头兼顾的方法,但是也有问题,在高并发情况下,缓存持续被命中,则缓存持续生效,就没有机会重新从数据表获取增删改后的新数据。对增删改后要求数据查询也立即生效的情景中,缓存刷新成了一个大问题。

    综上所述,需改造一下Model类,在select(),find(),getField()方法中,有启用缓存的情况下,增加一个缓存记录逻辑。在add(), save(), delete(), setField()方法中,在有启用缓存的情况下,增加一个清理缓存的逻辑。

    ==================方法如下:(可作为公开方法放在Model类中,也可以作为函数放在公共函数库function.php中)===================

    /**
    * 清理数据表查询缓存

    * 用于解决数据表增删改操作无法刷新查询缓存(特别是cache(true)自动命名的缓存)的问题
    * 只需在增删改操作成功时,调用clear_table_caching($table);
    * 即可使对应此表的所有查询缓存失效.

    * 默认在模型的add,save,delete,setField等操作中会自动调用

    * @param string $table 数据表名称
    * @since 1.0 <2015-4-30> SoChishun Added;
    */
    function clear_table_caching($table = '') {
    $table_caching_keys = F('table_caching_keys');
    if (!$table_caching_keys) {
    return;
    }
    // 清理指定表的缓存
    if ($table) {
    if (isset($table_caching_keys[$table])) {
    $values = $table_caching_keys[$table];
    foreach ($values as $id) {
    S($id, null);
    }
    unset($table_caching_keys[$table]);
    F('table_caching_keys', $table_caching_keys);
    }
    return;
    }
    // 清理所有表的缓存
    foreach ($table_caching_keys as $values) {
    foreach ($values as $id) {
    S($id, null);
    }
    }
    F('table_caching_keys', null);
    }

    /**
    * 添加缓存键名到数据表查询集合中

    * 用于提供clear_table_caching()方法的数据调用

    * 默认在getField,select,find等方法中自动调用

    * @param string $table 数据表名称
    * @param string $id 缓存键名
    * @since 1.0 <2015-4-30> SoChishun Added.
    */
    function log_table_cacheing($table, $id) {
    $table_caching_keys = F('table_caching_keys');
    if ($table_caching_keys && isset($table_caching_keys[$table]) && in_array($id, $table_caching_keys[$table])) {
    return; // 如果已经存在则退出
    }
    $table_caching_keys[$table][] = $id;
    F('table_caching_keys', $table_caching_keys);
    }
    ============
    使用方法(Model类中):
    $this->log_table_cacheing($options['table'], $key); // 记录数据表的缓存键
    $this->clear_table_caching($options['table']); // 清除数据表的所有查询缓存
    ============

    希望官方考虑到此问题,发布官方解决方案:)

    转载链接    http://www.thinkphp.cn/topic/29716.html

    展开全文
  • TP5模型关联

    千次阅读 2018-08-23 14:30:37
    belongsTo是定义在关联模型模型中,也是从模型对应的表一般都储存外键id,在关联模型属于从属关系 hasOne 是定义在主模型中,在关联模型中属于主关系,没有储存外键id 他们的所传入的参数都一样 第一个参数:...
  • TP模型---事务支持

    千次阅读 2016-07-22 10:27:31
    //事务调试,可跨表跨模型操作; function test(){ $testmodel=M('Test'); $testmodel2=M('Test2'); $testmodel->startTrans();//** if(!$testmodel->add(array('value'=>'zhangsan'))){ $testmodel->...
  • tp5和tp5.1的模型中是可以定义append属性的,用于追加要输出的字段。但是这里要注意一个问题,就是append属性中定义的字段名称不能与关联模型的函数名重名 问题定位过程 这个问题一开始我以为是关联模型的函数名中的...
  •  #使用对象模型,返回影响记录的条数 $playerModel=Player::get(4); $res=$playerModel->delete();  #使用where()返回影响记录的条数,where()条件恒等的话,默认选择全部对象删除 $res=Player::where...
  • TP5模型开启事务

    千次阅读 2019-10-02 20:18:33
    和Db开启事务类似,Db是静态方法 $userObj = new UserModel(); $userObj->startTrans(); try { $userObj->data($data,true)->isUpdate(false)->allowField(true)->...} catch(\Exception $...
  • tp5模型事件

    千次阅读 2018-07-30 09:20:44
    再写个基类模型 namespace app\common\model; use think\Model; class Base extends Model{ protected static function init() { //当前模型 $model = strtolower(basename(str_replace('\\', '/', get...
  • 1、模型tp5中指数据表对应业务逻辑之间的关系,模型是数据表的抽象表示模型类中的属性和方法:2、模型与数据表:对应关系、区别联系创建模型:a、创建:命令行创建:进入到项目目录文件tp5,...index模块/staff模型...
  • 我们在使用tp5模型查询时,会发现返回值总是对象形式,比较烦人,习惯性通过toArray()方法来转数组 在使用get等查询单条数据的方法时,可以使用toArray()方法 可是在查询多条时想要通过toArray()方法转数组时总是...
  • tp5 模型的输出方法

    2020-01-20 13:17:39
    数组输出: $user->hidden(['username','num'])->toArray(); json输出 $user->toJson(); 模板输出: $user=UserModel->get(1); $this->assgin('user',$user); return $this->......
  • TP5 model 模型事件

    千次阅读 2018-06-14 17:58:35
    快捷方法 beforeInsert afterInsert beforeUpdate afterUpdate beforeWrite afterWrite beforeDelete afterDelete beforeRestore afterRestore ...通常用法是写到init函数去绑定事件 ... protected static ...
  • Tp5模型修改器

    千次阅读 2018-04-02 16:15:39
    TP5在3.2的基础上新增加了模型修改器,个人感觉类似于原有的前置(后置)操作,区别在于,模型修改器精确到了字段上。形式: set+字段+Attr($val) get+字段+Attr($val) setPasswordAttr() 字段首字母必须大写,...
  • TP5模型关联操作

    2019-08-21 11:32:30
    1. manager表的 mg_role_id 关联 zq_role 表的 role_id 2. 在manager model中, 写入关联表 role, 注意这里的参数结构, 最后一个是 manager的外键. //一对一关联, 和role角色表关联 public function role() ...
  • tp5模型的自动时间戳

    2019-08-21 10:04:20
    tp5的模型有自动时间戳功能: 1.在数据库配置文件中开启: // 开启自动写入时间戳字段 'auto_timestamp' => true/datetime, 这个是全局设置,所有通过模型的数据都适合 2.在表格的模型文件中设置: / 是否需要...
  • tp5 模型join表的写法

    千次阅读 2020-08-06 13:51:03
    使用模型的写法 在model文件里先关联模型 public function tester() { return $this->hasOne('User', 'id', 'tester_id')->bind(['tester_name'=>'username']); } public function testee() { return $this->has...
  • tp5 模型返回类型

    2019-09-30 17:16:20
    1.模型的 all 方法或者 select 方法返回的是一个包含模型对象的二维数组或者数据集对象。 2.get 或者 find 方法返回的是当前模型的对象实例,可以使用模型方法。 3. 转载于:...
  • TP5 模型事务操作

    千次阅读 2018-06-21 11:17:00
    注意:数据只要涉及多表一致性操作,必须要开启数据库事务操作...ThinkPHP5 中模型层中使用事务: try{ $this->startTrans(); $this->data($order_data)->isUpdate(false)->save(); $new_orde...
  • TP5使用模型查询数据

    千次阅读 2019-06-19 10:01:58
    可以用数组多条件查询, 类似于 tp3 $map['name'] = 'imooc'; $map['id'] = array('gt', 2); $user = User::all($map); foreach ($user as $val) { $data[] = $val->toArray(); } dump($data); $res = ...
  • TP5使用模型添加数据

    千次阅读 2019-06-19 10:43:37
    先引入模型类 use app\index\modle\User; create 方法, save 方法, saveAll() 方法 1. create 方法. 直接使用 model的 create 方法 $res = User::create([ 'username' => 'imooc', 'password' => md5...
  • TP5使用模型删除数据

    千次阅读 2019-06-19 14:18:06
    1. 静态方法 destroy, 返回受影响的行数, 下面的情况是 参数为主键的情况 $res = User::destroy(1); dump($res); 参数也可以是一个数组 ...$res = User::destroy(['id' =>...$res = User::destroy(function ($query...
  • tp5 关联模型查询部分字段

    千次阅读 2019-07-04 10:46:00
    首先在模型中刚加入关联属性 public function stone() { return $this->belongsTo('StoneModel','stone_id','id')->bind(['stone_name'=>'name']); } 后面的bind 就可以吧StoneModel模型中的 ...
  • tp5模型怎么进行删除

    2018-09-11 07:10:39
  • 1.数据库操作也就说直接得使用Db进行操作。特点就是快,但是相对于model区别不是很大。 2.model更容易进行封装,代码相对更简洁。
  • tp5模型自动修改字段

    2018-08-06 00:30:00
    模型,修改自动完成字段<?php namespace app\demo\model; use think\Model; class Student extends Model{ 获取器 public function getSsexAttr($val){ switch($val){ ...
  • 实例讲解TP5中关联模型

    万次阅读 2017-07-21 21:27:52
    TP5 中,实现了ORM (Object Relational Mapping) 的思想,通过在模型中建立模型间的关联,实现建立表与表之间的关联。 二、文章中用到的表结构 image 表,存储图片的位置信息 banner 推荐位表,存储推荐位的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,101
精华内容 13,240
关键字:

tp模型