一、URL解析模式
1、 ThinkPHP 框架非常多的操作都是通过 URL 来实现的,{如:http:/域名/index.php/模块/控制器/操作/参数/值…}其中index.php是入口文件,在 public 目录下。
2、所有的模块都在 application 目录下,比如在 application 目录下有一个 index 目录,这就是一个模块,我们可以根据自己的需求创建一个属于自己的模块,比如创建一个admin目录,这个admin目录我们可以当成是一给后台模块,在这个admin的目录下一般还有Controller目录、Model目录、View目录,这三个目录就是我们常说的MVC架构。
3、Controller目录下存放的文件,就是我们所说的控制器文件,比如我们在application \\Controller目录下创建一个index.php的文件,这个控制器的类名也必须是 class Index,否则错误;在这个类下我创建了一个login的方法, 我们要访问这个控制器的正确URL是{http:/域名/index.php/admin/index/login},具体访问流程:通过域名找到public 目录下的index.php是入口文件,在这个入口文件下定义了应用目录{define(‘APP_PATH’, DIR . ‘/…/application/’);},从而找到application目录,所有我们的访问{http:/域名/index.php/admin/index/login}等价于{http:/域名/application/admin/index/login}
二、控制器的跳转和重定向
1、在application \\Controller目录下创建的控制器类,需要继承Controller这个类,继承这个类的用处就是为了使用Controller这个类里面的方法,在TinkPHP框架里已经了Controller这个类了,我们只要用就可以了,当然如果你不需要用到Controller这个类里面的方法,则不需要继承。
2、 Controller 类提供了两个跳转的方法,success(提示,指定跳转的路径)和 error(提示);
public function index() {if ($this->flag) {$this->success(\'成功!\', \'./application/view/login.html\');} else {$this->error(\'失败!\');}}
3、 如果需要自定义跳转页面,可以使用如下的模版变量:
三、数据库与模型
1、使用数据库的第一步,就是连接你的数据库;
连接数据库的方法:在application目录下有个database.php 文件,这个文件就是负责数据库的连接文件
database.php文件大致内容:
// 数据库类型\'type\' => \'mysql\',// 服务器地址\'hostname\' => \'127.0.0.1\',// 数据库名\'database\' => \'grade\',// 用户名\'username\' => \'root\',// 密码\'password\' => \'123456\',// 端口\'hostport\' => \'3306\',// 编码\'charset\' => \'utf8\',// 数据库表前缀\'prefix\' => \'tp_\',
我们只需要填写好自己的数据库名、数据库用户名、数据库密码,填写好就可以了
配置完数据库,我们使用如下代码,在控制器端输出 mysql 里的数据;
public function getNoModelData() {//$data = Db::table(\'tp_user\')->select();$data = Db::name(\'user\')->select(); return json($data);}
tp_user是数据库里的表名,用table()方法就必需要完整的表面,而name()方法需要除去前缀,就是“_”前面的字段
2、MVC中的M(model )模型,也就是application/model 目录,这个目录主要是用来处理数据库的,简单来说就是用来操控数据库的,举例子说:
我们在application/model 目录下创建了一个User类
namespace app\\model;use think\\Model;class User extends Model {}
那么我们就需要在application/Controller 目录下创建一个与其对应的控制器
public function getModelData() {//User就是model模型中的User类 等价于 java 中的 date=new User;$data = User::select();return json($data);}
四、数据库的查询
1、基本查询
Db::table(\'tp_user\')->find();
find()方法只查询一条数据
return Db::getLastSql()
Db::getLastSql()方法,返回SQL 查询的原生语句
Db::table(\'tp_user\')->where(\'id\', 27)->find()
where()方法,指定查询数据
Db::table(\'tp_user\')->select();
select()方法,获取多列数据
Db::name(\'user\')->where(\'id\', 27)->value(\'username\');
value()方法,可以查询指定字段的值(单个),没有数据返回 null
Db::name(\'user\')->column(\'username\');
colunm()方法,可以查询指定列的值(多个),没有数据返回空数组;
Db::name(\'user\')->column(\'username\', \'id\');
可以指定 id 作为列值的索引;
五、链式查询
1、因为 Db::name(‘user’)是我们多次使用的,每次对要写比较麻烦,所有可以把它封装成一个变量,
$user = Db::name(\'user\');$data = $user->select();
$user->removeOption(\'where\')->select();
removeOption()方法,可以清理掉上一次查询保留的值;
六、数据库的增、删、改
1、增加数据
$data = [\'username\' => \'辉夜\',\'password\' => \'123\',\'gender\' => \'女\',\'email\' => \'huiye@163.com\',\'price\' => 90,\'details\' => \'123\',\'create_time\' => date(\'Y-m-d H:i:s\')];Db::name(\'user\')->insert($data);Db::name(\'user\')->insertGetId($data);
insert()方法可以向数据表添加一条数据,如果新增成功,insert()方法会返回一个 1 值;
insertGetId()方法,可以在新增成功后返回当前数据 ID
$data = [[\'username\' => \'辉夜\',\'password\' => \'123\',\'gender\' => \'女\',\'email\' => \'huiye@163.com\',\'price\' => 90,\'details\' => \'123\',\'create_time\' => date(\'Y-m-d H:i:s\')] ,[\'username\' => \'辉夜\',\'password\' => \'123\',\'gender\' => \'女\',\'email\' => \'huiye@163.com\',\'price\' => 90,\'details\' => \'123\',\'create_time\' => date(\'Y-m-d H:i:s\')]];Db::name(\'user\')->insertAll($data);
insertAll()方法,批量增加数据
2、修改数据
$data = [\'username\' => \'李白\'];$update = Db::name(\'user\')->where(\'id\', 38)->update($data);
用 update()方法来修改数据,修改成功返回影响行数,没有修改返回 0;
4、删除数据
Db::name(\'user\')->delete(51);
极简删除可以根据主键直接删除,删除成功返回影响行数,否则 0;