获取当前路由信息
use app\BaseController; // 引入控制器
public function index()
{
// 返回当前实际路径
return $this->app->getAppPath();
// 返回当前方法名
// return $this->request->action();
}
载入的控制器不存在时
public function __call(string $name, array $arguments)
{
return '控制器不存在' . $name;
}
tp链接数据库, 在.env里配置
namespace app\controller;
use app\BaseController;
use think\facade\Db;
class User extends BaseController
{
//APP_DEBUG = true
//DB_TYPE = mysql
//DB_HOST = 127.0.0.1
//DB_NAME = demo
//DB_USER = root
//DB_PASS = root
//DB_PORT = 3306
//DB_CHARSET = utf8
//DEFAULT_LANG = zh-cn
use think\facade\Db;
public function index() {
// 查询所有数据
// $user = Db::table('user')->select();
// 查询满足条件的所有数据
// $user = Db::table('user')->where('id', 1)->select();
// 查询满足条件的一条数据
// $user = Db::table('user')->where('id', 1)->find();
// 如果没有数据, 正常情况下返回null, 这个语法返回空的数组
// $user = Db::table('user')->where('id', 11)->findOrEmpty();
// 如果没有数据抛出异常
//$user = Db::table('user')->where('id', 11)->findOrFail();
// 获取某一个数据的某个字段的值
// $user = Db::name('user')->where('id', 1)->value('name');
// 获取多个数据的多个字段的值 id作为索引 {"6":{"name":"张三","age":30,"id":6}} 不传id返回 [{"name":"张三","age":30,"id":6}]
// $user = Db::name('user')->where('age', 30)->column('name, age', 'id');
// Db::table('user')不会拼接表的前缀,name会拼接前缀
$user = Db::name('user')->select();
return json($user);
}
}
批量处理
public function index()
{
// 批量处理
// $user = Db::name('user')->chunk(2, function($users) {
// foreach($users as $user) {
// echo $user['name'];
// }
//});
// 批量处理2
$user = Db::name('user')->cursor();
foreach($user as $u) {
echo $u['name'];
}
}
向数据库新增数据
$data = [
[
'name' => 'thinkphp',
'age' => 159,
'sex' => '男',
'details' => '11',
],
[
'name' => 'thinkphp',
'age' => 158,
'sex' => '男',
'details' => '11',
]
];
// 向数据库新增单条数据 如添加的字段和数据库不符 会报错
// $user = Db::name('user')->insert($data);
// 向数据库新增单条数据 如添加的字段和数据库不符 会忽略错误的字段为null 不会添加进去
// $user = Db::name('user')->strict(false)->insert($data);
// 如果数据库是mysql 支持replace 如果主键已经存在 强制替换数据 并且忽略错误的字段
// $user = Db::name('user')->replace()->strict(false)->insert($data);
// 返回新增数据的id
// $user = Db::name('user')->replace()->insertGetId($data);
// 批量新增数据 也支持replace 如果单次的数据量很大 可以通过limit限制每次写入的数据量
$user = Db::name('user')->replace()->limit(100)->insertAll($data);
return $user;
更新数据库数据
// 更新数据库数据
// $data = [
// 'name' => 'thinkphp333',
// ];
// $user = Db::name('user')->where('id', 1)->update($data);
// 更新的数据如果包含主键 可以去掉where条件
// $data = [
// 'id' => 1,
// 'name' => 'thinkphp',
// ];
// $user = Db::name('user')->update($data);
// 对字段执行sql函数操作 exp()实现某一个字段英文字母大写
// $data = [
// 'id' => 1,
// 'name' => 'thinkphp'
// ];
// $user = Db::name("user")->exp("details", "UPPER(details)")->update($data);
// 保存数据 主键存在就是更新 不存在就是新增
// $data = [
// 'name' => 'thinkphp222'
// ];
// $user = Db::name("user")->save($data);
// 自增自减 要有主键id inc是自增 dec是自减
// $data = [
// 'id' => 1,
// 'name' => 'thinkphp333'
// ];
// $user = Db::name("user")->dec("age")->update($data);
// 使用Db::raw() 来设置每个字段的特殊需求 灵活且清晰
// $data = [
// 'id' => 1,
// 'name' => 'thinkphp333'
// ];
$user = Db::name("user")->where('id', 1)->update([
'name' => Db::raw('UPPER(name)'),
'age' => Db::raw('age+1'),
]);
return $user;
删除数据
// 默认是删除主键
// $user = Db::name('user')->delete(1);
// 默认是删除主键 删除多条数据
// $user = Db::name('user')->delete([1,2]);
// 条件删除
$user = Db::name('user')->where('id', 3)->delete();
return $user;