龙空技术网

ThinkPHP之数据库连贯操作

ChallengerV 376

前言:

当前大家对“thinkphp增删改查例子”大致比较讲究,我们都想要学习一些“thinkphp增删改查例子”的相关知识。那么小编同时在网络上搜集了一些关于“thinkphp增删改查例子””的相关内容,希望小伙伴们能喜欢,咱们快快来学习一下吧!

上篇文章我向大家分享了ThinkPHP操作数据库的教程,但是其中只涉及到了简单的数据库操作。本文将继续为大家分享如何使用数据库连贯操作来进行复杂的数据库操作。

配图来自网络

where

where是数据库操作中最重要的部分,无论我们是增删改查的任何一个操作,基本上都离不开where。where的基本用法很简单,如下:

$user = M("user");

$user->where('username = 'ThinkPHP'')->select();

当查询条件较少的情况下,我们可以直接使用上面这种字符串形式进行查询,如果条件较多,看起来很不直观,我们也可以使用数组进行查询,如下:

$where['username'] = "ThinkPHP";

$user->where($where)->select();

这两种最终生成的SQL语句是一样的:

select * from user where `username` = 'ThinkPHP';

通过数组查询同样可以使用表达式查询,支持的表达式如下:

来自ThinkPHP官方文档

假设我们需要查询ID大于2的用户,可以使用下面的条件代码:

$where['id']=array("gt","2");

查询ID大于2并小于5的用户,可以使用下面的条件代码:

$where['id']=array("between",array(2,5));

其他的用法基本类似,大家可以亲自尝试一下。

data

data方法用于设置操作的数据对象的值,例如我们之前的注册、修改密码操作。

$user=M("user");

$data['username'] = "ThinkPHP";

$data['password'] = "blog.fmtol.com";

$data['reg_time'] = "2017-10-18 7:10:21";

$user->data($data)->add();

不过,小编开发的时候基本上没用到过data方法,因为我们可以直接写作$user->add($data),关于这点我不多评价,看个人的习惯。不过,当我们需要更新数据的时候,必须传入数据表的主键值,否则会更新失败。

$user=M("user");

$data['id'] = 1;

$data['password'] = "";

$user->data($data)->save();

同样,我们也可以直接使用$user->save($data)。

field

field方法用于标识需要返回(查询)或者操作(写入)的字段。

比如我们需要查询用户列表,但是仅需要用户名和注册时间,可以使用如下代码:

$user = M("user");

$user->field("username,reg_time")->select();

在我们进行数据更新是,同样可以使用field来限定需要更新的字段,大家可以自行尝试一下。

配图来自网络

order

order方法用于对查询结果进行排序。

比如我们需要将上面的查询结果按照用户的注册时间进行倒序排列(由大到小),可以使用如下代码:

$user = M("user");

$user->field("username,reg_time")->order("reg_time desc")->select();

如果注册时间相同,再根据用户名进行正序排列,可以使用order("reg_time desc,username asc"),asc可以省略。有些朋友在对数据库字段进行命名时,可能会直接使用time等MySQL关键字,这样的话直接使用order("time")会出错,这样需要使用数据传值解决。如:

$user = M("user");

$user->field("username,reg_time")->order(array("time"=>"desc","username"))->select();

limit

limit用来限定查询和操作的数量,特别是在数据分页时使用较多。

当limit方法传入一个参数时,代表限定的条数,如查询最近注册的前10个用户:

$user = M("user");

$user->limit(10)->order("reg_time desc")->select();

当传入两个参数时,第一个参数代表开始行数,第二个参数代表限定的条数,如查询最近注册的前10-20个用户:

$user = M("user");

$user->limit(10,10)->order("reg_time desc")->select();

上面这种用法就是数据分页的应用,你可以把它当做第二页,每页显示10个用户。

当我们想要把最先注册的5个用户删除时,也可以使用limit做限制,如:

$user = M("user");

$user->limit(5)->order("reg_time")->delete();

配图来自网络

page

page方法是专门为数据分页定制的人性化操作方法。

当我们使用limit进行分页操作时,需要自己计算起始位置,而使用page方法,我们只需要传入页码和每页数量即可,如下:

$user = M("user");

$user->page(1,10)->order("reg_time desc")->select(); //第一页

$user->page(2,10)->order("reg_time desc")->select(); //第二页

配图来自网络

总结

上述为ThinkPHP连贯操作的基本用法,这些操作基本可以满足我们开发中常见的场景。如果上述方法无法满足您的需求,您也可以前往ThinkPHP官方文档的连贯操作介绍页面来学习其他高级用法。

如果您觉得小编的教程对您有所帮助,请点击关注支持小编,您的关注是对小编最大的鼓励。

标签: #thinkphp增删改查例子