php论坛功能心得,CoffeePHP社区 ThinkPHP3.2 之心得(一)

查询的关键也就是一个单词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

再来说一下,数组查询

$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这个条件掌握好 其他的删除,修改,增加 也是一样的。

下面来一个很精妙的小例子。

e829f24289b6033d4a77bd26dbfb24a8.png

这个是一个模糊查询,上面好像也有,我们这里就用数组数组方法吧。首先,看这张图,这是一个表单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();

}

Thinkphp还有个地方经常犯错的就是 在模版里写<>(标签)

例如:

'比较标签'

selected >

{{$group.name}}

//需要注意的是在这些内置的判断标签里

name="group.id" || name="group['id']"

只有这两种写法 不需要 '$' ,相反而在value里

value = $customer.group_id || value = $customer['group_id']

//一定不要忘记'$'

//'if标签' 有点奇怪

selected

//一级分类:

{{$category.name}}

selected

//二级分类:

{{$child.name}}

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

先写这么多 以后再更新~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值