精华内容
下载资源
问答
  • 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中.

    展开全文
  • PHP TP模型

    2016-07-31 12:29:00
    1.原始方式(必须做模型文件,即使是空的也要建) $model=new \Home\Model\InfoModel(); var_dump ($model); 2.D()方法(不需要建模型文件) //$名=D("表名"); $model=D("Info"); var_dump ($model); 3.M...

    造对象

    1.原始方式(必须做模型文件,即使是空的也要建)

    $model=new \Home\Model\InfoModel();
    var_dump ($model);

    2.D()方法(不需要建模型文件)

    //$名=D("表名");
    $model=D("Info");
    var_dump ($model);

    3.M()方法(不需要建模型文件)

    //$名=M("表名");
    $nation=M("Nation");
    var_dump($nation);

    操作数据库

    1.调用select方法查询所有数据

    $ainfo=$model->select();

    2.调用select方根据主键值找多条数据

    $ainfo=$model->select("p001,p002,p003");

    3.调用find方法根据主键值找一条特定的数据

    $ainfo=$model->find("p001");

    连贯操作

     where  给查询添加条件

    $ainfo=$model->where("code='p003' or sex=true")->select();

    table  切换操作的表

    $ainfo=$model->table("nation")->select();

    alaias  设置表的别名

    $ainfo=$model->alaias("人员")->select();

    field  指定查询的列

    $ainfo=$model->field("code,name")->select();

    order  对查询结果排序

    $ainfo=$model->order("nation desc")->select();

    group 分组

    $ainfo=$model->field("nation")->group("nation")->select();

    having 加分组后的条件

    $ainfo=$model->group("nation")->having("count(*)>2")->select();

    join  连接多个表(注意:给重名的列加别名)

    $ainfo=$model->field("info.code,info.name as xingming,sex,nation.name,birthday")->join("nation on info.nation = nation.code")->select();

     union  联合查询

    $ainfo=$model->field("name")->union("select name from nation")->select();

    distinct  去重(需要加参数true)

    $ainfo=$model->field("nation")->distinct(true)->select();

     

    limit  分页(跳过多少条,取多少条)

    $ainfo=$model->limit(2,2)->select();

    page  分页(当前第几页,每页多少条)

    $ainfo=$model->page(3,2)->select();

    聚合函数

    count  取数据总条数

    $ainfo=$model->count("*");

    sum  求和

    $ainfo=$model->table("car")->sum("price");

    avg 求平均数

    $ainfo=$model->table("car")->avg("price");

    max 求最大值

    $ainfo=$model->table("car")->max("price");

    min 求最小值

    $ainfo=$model->table("car")->min("price");

    原生态查询语句

    $sinfo="select * from  info where nation='n002'";
    $ainfo=$model->query($sinfo);

    原生态添加语句

    $sinfo="insert into nation values('n005','傣族')";
    $ainfo=$model->execute($sinfo);

     

    <if><else /></if>  <foreach></foreach>

    function info()
    {
        $model = D("Info");
        $ainfo = $model->field("Info.Code as code,Info.Name as name,sex,Nation.Name as nationname,birthday")->join("Nation on Info.Nation = Nation.Code")->select();
            
        $this->assign("info",$ainfo);
            
        $this->assign("test",10);
        $this->display();
    }

     

    info.html

    <table width="70%" border="1" cellpadding="0" cellspacing="0">
        <tr>
            <td>代号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>民族</td>
            <td>生日</td>
        </tr>
        <foreach name="info" item="v">
            <tr>
                <td><{$v.code}></td>
                <td><{$v.name}></td>
               <!-- tp框架中三元运算符暂时不支持.语法-->
                <td><{$v["sex"]?"男":"女"}></td>
                <td><{$v.nationname}></td>
                <td><{$v.birthday}></td>
            </tr>
        </foreach>   
    </table>
    <!--html界面禁止出现“><”应该用备用词代替gt代表>,lt代表<-->
    <if condition="$test gt 5">
    大于5
    <else />
    其他
    </if>

     

    转载于:https://www.cnblogs.com/yy01/p/5722738.html

    展开全文
  • 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

    展开全文
  • tp模型关联预载入

    2020-08-13 17:47:24
    模型 public function goods() { return $this->belongsTo('TravelGoods','goods_id','id'); } public function stock() { return $this->belongsTo('app\admin\model\GoodsOptimizationStock','goods_optimization...
  • 一、新建的模型名和表名一样,采用驼峰式,如表名user_type模型取名为UserType namespace app\index\model;use think\Model;class UserType extends Model{}--------------控制器调用方法如下 use app\index\model...
  • TP 模型代码速查导航

    2019-03-01 11:41:38
    模型的关联操作是模型的最为强大,也是最为复杂的部分,通过模型关联操作把数据表的关联关系对象化,解决了大部分常用的关联场景,封装的关联操作比起常规的数据库联表操作更加智能和高效,并且直观,所以关联也可以...
  • TP模型---事务支持

    千次阅读 2016-07-22 10:27:31
    //事务调试,可跨表跨模型操作; function test(){ $testmodel=M('Test'); $testmodel2=M('Test2'); $testmodel->startTrans();//** if(!$testmodel->add(array('value'=>'zhangsan'))){ $testmodel->...
  • class SectionModel extends Model{  //表单数据验证  protected $_validate=array(  array('title','require','分类名称必须填写',1,'regex',3),  );  protected $_auto=array(  array('alias','getAl...
  • PHP-tp框架模型关联

    2020-08-23 17:46:37
    tp模型关联逻辑回归实际新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建...
  • tp5模型

    2019-07-14 17:07:39
    1 模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,例如: 模型名 约定对应数据表(假设数据库的前缀定义是 think_) User think_user UserType ...
  • TP5 模型

    千次阅读 2017-11-09 13:53:06
    tp5的controller里面连接数据库表模型:以下tablename都是不包含表前缀的部分,prefix-tablename是包含表前缀的完整表名1.利用助手函数db(),直接连接数据库操作:$res=db('tablename')-&gt;find(); //返回...
  • tp 视图模型

    2019-09-12 13:55:02
    http://document.thinkphp.cn/manual_3_2.html#view_model ThinkPHP还可以支持视图模型的JOIN类型定义,我们可以把上面的视图定义改成: public $viewFields = ...
  • Tp 关联模型

    2018-01-25 00:53:12
    一对一关联:belongTo hasOne 在主表的模型中建立关联关系,用 hasOne 在从表模型中建立关联关系,用 belongsTo
  • tp5.0模型

    2018-11-07 11:36:32
    引入 1: use引入 在new 或者直接使用助手函数model()...模型关联 一对一关联 hsManyk可以自定关联外键uid profile表中需要有uid字段 一对多 参考链接http://www.cnblogs.com/clubs/p/8907219.html ...
  • TP关联模型

    2019-07-17 16:23:21
    <?php class ExpertiseModel extends RelationModel { protected $_link=array( 'Role'=> array( 'mapping_type'=>BELONGS_TO, ...
  • 笔记tp5:tp5模型操作

    2020-08-16 22:42:29
    笔记tp5:tp5模型操作 1.增://只是选好用的记录 1.增加一条: $user = new User([ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com' ]); $user->save(); 2.增加多条: $user = new User; $list = ...
  • tp5 模型关联

    2018-09-08 11:45:42
    TP5 中,实现了ORM (Object Relational Mapping) 的思想,通过在模型中建立模型间的关联,实现建立表与表之间的关联。 二、文章中用到的表结构 所用的数据表和数据传到了百度云 链接:...
  • TP5模型关联

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

    2019-08-21 10:24:07
    hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型'); 注意这里的'外键名'为带有外键的表的外键与主副表无关。 多对一关联 belongsTo('关联模型名','外键名','关联表主键名',['模型别名定义']...
  • tp5模型关联

    2021-01-21 00:00:16
    2.我们要查询数据可以使用关联模型的方法 2.1在model中新建,Banner.php和Banneritem.php文件 2.2在Banner表中建立关联模型 public function aaa(){ return $this->hasMany('Banneritem','banner_id','id');//...
  • TP5 模型CURD

    2018-06-07 23:17:00
    ThinkPHP5的模型是一种对象-关系映射...ThinkPHP5 模型类和Db类的区别主要在于对象的封装,Db类的查询默认返回的是数组(或者集合),而模型类返回的是当前的模型对象实例(或者集合),模型是比Db类更高级的数据支持模型...
  • 禁用z轴深度实现模型透视 tp游戏模型通用 改个模型id就能用
  • 1、模型tp5中指数据表对应业务逻辑之间的关系,模型是数据表的抽象表示模型类中的属性和方法:2、模型与数据表:对应关系、区别联系创建模型:a、创建:命令行创建:进入到项目目录文件tp5,...index模块/staff模型...
  • TP框架数据模型

    2018-05-07 15:45:00
    1.TP框架的数据模型需要建在Model文件夹下:    1.数据模型 与控制器相似,但是每个数据模型控制一张数据表。  2.数据模型可写可不写,如果不写 则沿用父类数据模型。 2.访问数据库:  1.更改数据库配置: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,417
精华内容 966
关键字:

tp模型