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还有个地方经常犯错的就是 在模版里写<>(标签)
    例如:
'比较标签'
<select name="group_id" id="group">
                            <volist name="groups" id="group">
                                <option value="{{$group.id}}" <eq name="group.id"value="$customer.group_id">selected</eq> >
                                {{$group.name}}
                                </option>
                            </volist>
                        </select>
需要注意的是在这些内置的判断标签里  name="group.id" || name="group['id']" 
只有这两种写法  不需要 '$'  ,相反而在value里  
value = $customer.group_id || value = $customer['group_id'] 一定不要忘记'$'

'if标签'  有点奇怪
<select name="category_id" id="parentCategory" class="form-control">
                                <volist name="categories" id="category">
                                    <option value="{{$category.id}}"
                                    <if condition="$category['id'] eq $article['category_id']">selected</if>
                                    >一级分类:{{$category.name}}</option>
                                    <volist name="category.children" id="child">
                                        <option value="{{$child.id}}"
                                        <if condition="$child['id'] eq $article['category_id']">selected</if>
                                        >      二级分类:{{$child.name}}</option>
                                    </volist>
                                </volist>
                            </select>

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

先写这么多 以后再更新~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容