zoukankan      html  css  js  c++  java
  • 总结ThinkPHP使用技巧经验分享(四)

    ThinkPHP的CURD易忽视点小结
    1、不定义方法,直接渲染模板。
    对于没有任何实际逻辑的操作方法,我们只需要直接定义对应的模板文件就行了,比如表单页面,这个页面一般不会有变量向模板中输出,所以,我们没有必要再去写一个对应的空方法然后$this->display()了。
    2、简介create方法。
    假设我们实例化的模型为$model,那么ThinkPHP可以直接通过$model->add()的方式向数据库中添加数据,那么如果我们在$model->add()之前调用$model->create()方法,这样有什么意义呢?create()方法的意义只有一个“确保写入数据库的数据安全和有效”。
    其中,数据的自动验证便是借助create方法来实现的。值得一提的是,用create方法实现自动验证,需要我们定义模型**Model.class.php,然后在实例化的时候使用D()方法进行实例化。
    3、使用对象的方法插入数据。
    可能你常常用下面的方式(数组方式)插入数据 $Form   =   D('Form'); $data['title']  =   'ThinkPHP'; $data['content']    =   '表单内容'; $Form->add($data);
    其实ThinkPHP还支持对象的方式直接向数据库插入数据,如下: $Form   =   D('Form'); $Form->title  =   'ThinkPHP'; $Form->content    =   '表单内容'; $Form->add();
    4、不指定条件对数据更新。 $Form = M("Form");  // 要修改的数据对象属性赋值 $data['id'] = 5; $data['title'] = 'ThinkPHP'; $data['content'] = 'ThinkPHP3.1版本发布'; $Form->save($data);  // 根据条件保存修改的数据
    save方法会自动识别数据对象中的主键字段,并作为更新条件。当然,你也可以显式的传入更新条件,也就是我们最常用的方法: $Form = M("Form"); // 要修改的数据对象属性赋值 $data['title'] = 'ThinkPHP'; $data['content'] = 'ThinkPHP3.1版本发布'; $Form->where('id=5')->save($data); // 根据条件保存修改的数据
    其实还有对象的方式,就像上面提到的,插入数据,用对象的方式一样: $Form = M("Form"); // 要修改的数据对象属性赋值 $Form->title = 'ThinkPHP'; $Form->content = 'ThinkPHP3.1版本发布'; $Form->where('id=5')->save(); // 根据条件保存修改的数据
    并且,可以将主键字段包含在要保存的数据里,这样就可以不需要写where了 $Form = M("Form"); // 要修改的数据对象属性赋值 $Form->id = 5; $Form->title = 'ThinkPHP'; $Form->content = 'ThinkPHP3.1版本发布'; $Form->save(); // 根据数据对象中的主键保存修改的数据
    5、单个字段值的修改。
    有些时候,我们只需要修改某个字段的值,就可以使用setField方法,而不需要每次都调用save方法。 $Form = M("Form"); // 更改title值 $Form->where('id=5')->setField('title','ThinkPHP');
    6、强大的增减字段值运算。
    ThinkPHP中,可以对某个字段的数据直接执行增减操作。
    对于统计字段,系统还提供了更加方便的setInc和setDec方法。 $User = M("User"); // 实例化User对象 $User->where('id=5')->setInc('score',3); // 用户的积分加3 $User->where('id=5')->setInc('score'); // 用户的积分加1 $User->where('id=5')->setDec('score',5); // 用户的积分减5 $User->where('id=5')->setDec('score'); // 用户的积分减1
    7、不使用where来执行删除。
    $User->delete('1,2,5'); // 删除主键为1,2和5的用户数据。
    这种用法可以用在类似于签到时候,用户积分自动增加的例子上。
    8、$this->assign()方法之单参数的使用 在ThinkPHP的手册中,有关于assign()方法的使用,这里对其作用不再叙述。而我们要讨论的是,assign方法如果只有一个参数的使用情况。 IndexAction.class.php

    1. <?php
    2. class IndexAction extends Action {
    3.     public function index(){
    4.         $var_array = array("color" => "blue",
    5.                    "size"  => "medium",
    6.                    "shape" => "sphere");
    7.         $this->assign($var_array);
    8.         $this->display();
    9.     }
    10. }
    复制代码

    ?> index.html

    1. <html>
    2.     {$color}     <!--这里输出blue-->
    3. </html>
    复制代码

    由上面的例子可以看出,框架是将参数数组中的每一个键值对当成“参数”=>“值”的形式赋值到模板里了 所以,如果需要赋值到模板上的值很多的话,不妨用这种方式 注意: 由于这是隐式地赋值,要注意参数重名哦!特别是id、name这一类数据库常用的字段

  • 相关阅读:
    Mac上的USB存储设备使用痕迹在新版操作系统有所变化
    Beware of the encrypted VM
    A barrier for Mobile Forensics
    Second Space could let suspect play two different roles easily
    Take advantage of Checkra1n to Jailbreak iDevice for App analysis
    Find out "Who" and "Where"
    Where is the clone one and how to extract it?
    Downgrade extraction on phones running Android 7/8/9
    高版本安卓手机的取证未来
    How to extract WeChat chat messages from a smartphone running Android 7.x or above
  • 原文地址:https://www.cnblogs.com/hnlihao/p/4022091.html
Copyright © 2011-2022 走看看