ThinkPHP3.2 之心得(一)

先说一下自己学习的经历~

刚开始学的时候感觉是有点困难的,因为第一次接触MVC框架。其实说简单一点,就是每一个Controller(控制器)对应View(视图层)下的一个相同名字的文件夹,然后自定义Controller里面的方法, 就对应View文件夹下的html文件。而Model的作用就是管理控制器里的逻辑部分,使操作更简单化,还能放一些有用的函数方法。

再说说心得吧

1.查询
  • 查询的关键也就是一个单词where 是查询的条件。在 TP 中用得比较多的就是两种方法,一种是字符串查询,一种是数组查询(对象用得少,没必要)
    1.首先说一下字符串查询
//假设我们有一个user表
$user = M('User');

//已知id = 3查询一条记录
$result = $user->where('id = 3')->find();   //注意查询单条记录一律用find,这样返回的是一维数组。

//查询 id为$id 的那条记录
$result = $user->where("id = '$id'")->find();  //变量在里面打上单引号(防止它是字符串呢)

//查询 id为一个数组 如$id = [1, 2, 3];
$id = join(',',$id);       //要将数组改成字符串模式
$result = $user->where("id in (".$id.")")->select();    //注意查询多条记录一律用select()

//查询id 为一个数组 并且 status为 1呢 (多个字段查询)
$result = $user->where("id in (".$id.") AND status = 1")->select(); //除了 "=" 以外的也与其类似
//统计查询
$user->where("status = 1")->count(); //统计status = 1 的记录个数

//找到对应$id字段,使其值加减(一般用于做浏览数等地方)
$user->where("id = $id")->setInc('view', 1); //使view这个字段的值 +1  加减"1" 可以默认不要第二个参数
$user->where("id = $id")->setDec('view', 1);//使view这个字段的值 -1
  1. 再来说一下,数组查询
$user = M('User');
//数组查询一般将对应的字段条件作为键 放到数组里 如:
$map['id'] = ['lt', 100];
$user->where($map)->select(); //查询id 小于100的数据

//上面是单个数据  如果查询多个字段呢?
$map['status'] = 1;
$map['name'] = ['like',['%javascript%']];
$user->where($map)->select(); //记住 这样默认是 'and' 连接的  两个条件都要满足

//问题来了 ,  如果是or连接呢
$map['status'] = 1;
$map['name'] = ['like',['%javascript%']];
$map['_logic'] = 'or';
$user->where($map)->select(); //这样就变成or了 两个条件满足其一即可

//跟着上面的来  说过$id = [1, 2, 3];
$map['id'] = ['in', $id];  /*或者是*/ $map['id'] = ['in',''.join(",",$id).'']; 

3.只要把where这个条件掌握好 其他的删除,修改,增加 也是一样的。
下面来一个很精妙的小例子。

表单模糊查询
这个是一个模糊查询,上面好像也有,我们这里就用数组数组方法吧。首先,看这张图,这是一个表单form,
method为get,如果两个都填,那么就是两个条件AND 如果只填一个,那么就单独查询, 如果不填就查询所有的。

public function index() {
    $name = I('get.name');
    $phone = I('get.phone');  //先用I方法获取到传过来的数据
//然后再进行判断
    if($name && trim($name) != '') {
        $map['name'] = ['like', '%'.$name.'%'];  //数组方式的模糊查询
    }    
    if($phone && trim($phone) != '') {
        $map['phone'] = ['like', '%'.$phone.'%'];    
    } 
    //这里假设还有一个条件  status = 1;
    $map['status'] = 1;
    $result = $user->where($map)->select();
}
  1. Thinkphp还有个地方经常犯错的就是 在模版里写<>(标签)
    例如:
'比较标签'

需要注意的是在这些内置的判断标签里  name="group.id" || name="group['id']" 
只有这两种写法  不需要 '$'  ,相反而在value里  
value = $customer.group_id || value = $customer['group_id'] 一定不要忘记'$'

'if标签'  有点奇怪


这个奇怪在  因为不是name里面所以需要'$'  应该 $X['xxx']和 $X.xxx可以替换 才对
 问题就处在最后一个又不能替换   。
经上面得出的结果  在比较标签里  尽量全部用$X['xxx'] ,不要用$X.xxx了
还有注意 name="  ", 这个里面一定不要加 '$'

先写这么多 以后再更新~

你可能感兴趣的:(ThinkPHP3.2 之心得(一))