Thinkphp5 add, delete, modify and check operations (add, delete, modify and check through models)
How to add, delete, modify and check through models in Thinkphp5 is very simple.
First create a controller in the application\index\controller directory and name it: Index.php
Index.php The code is as follows, here I am in the application\index\controller module If the controller created under is not the index module, your namespace must be changed to the namespace corresponding to your own module.
<?php namespace app\index\controller; use app\index\model\Admin; class Index { public function index(){ Admin::index(); } }
Then create a model in the application\index\model directory and name it Admin.php
Admin.php The code is as follows. I created the model under the application\index\model module. , if it is not the index module, your namespace needs to be changed to the namespace corresponding to your own module.
Admin.php (Let’s talk about the model query operation first)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = '14'; /* 单条数据查询操作,all方法是tp5框架规定的查询方法,all里面是一个闭包,作为变量传入, 不要纠结闭包构造,直接复制用即可,不需要关注$query是什么?框架内部实现时传值进去, 执行where方法,只需要关注where条件和传的变量$list即可。 $list值自己可定 如上面$list = 14,id可自己定,查询id=14这一条数据 */ $re = Admin::all(function($query) use ($list) { $query->where('id','=',$list); }); //echo '<pre/>';var_dump($re[0]->data); } }
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = ['13','14']; /* 这是多条查询,查询id=13和14这两条数据,同上述只需要关注where里面的条件即可, 如果查name或其它字段把where里的id改成name即可,$list也封装好了, 你可以传值进去,就像我上面$list 等于一个数组,*/ $re = Admin::all(function($query) use ($list) { $query->where('id','in',$list); }); // echo '<pre/>';var_dump($re); } }
<?php namespace app\index\model; use think\Model; use think\Db; class Admin extends Model { public static function index() { /* join查询,查询两个表以上的数据 Db::table 要加上use think\Db; 这里查的是user表的id等于sessions表的id,两个表里的符合条件的全部数据 */ $re = Db::table('user') ->alias('a') ->join('sessions w','a.id = w.id') ->select(); // var_dump($re);die; } }
namespace app\index\model; use think\Model; use think\Db; class Admin extends Model { // 数据表名 这里要提一下,表名必须是完整的表名,要带上表前缀,哪怕在配置文件里面设置了表前缀。 protected $table = 'fa_kindex'; // 查询 public static function index() { // 如果要查询一张表中所有字段信息,直接写个闭包在里面就可以了, $result = Index::select( function() {} ); return $result; // $offset = 0, $limit = 1, $result = Index::select( // use()里面写传进闭包中的变量,如下面的 use ($offset , $limit) function($query) use ($offset , $limit , $rid) { /* 闭包构造 $query可以衔接order,limit,where,field等条件。但不能写成 $query->select();因为这样select方法会执行两次 可以写成 $query->order('id','asc'), //根据id升序查询 $query->limit($offset , $limit) $query->field('id',true); //查询除id字段外的所有字段数据 // 查询符合id = 1的id,name字段的数据,查询结果按id升序排列 $query->field('id','name')->where('id=1')->order('id','asc'); */ $query->order('id','asc')->limit($offset , $limit)->field('id',true)->where('rid ='.$rid); } ); return $result; } }
Of course, many people say that after querying, they get class objects. That’s because tp3.2 directly returns the query results. , and tp5 does not directly return the query results. It returns the entire instantiated class and puts the query results into the data attribute of the class. So how do you get the data? Imagine how to access the attributes in the class after instantiating the class. It’s hard to understand. Use -> to get it.
echo '<pre/>';var_dump($re[0]->data);
This way you can get the data. It’s the same as tp3.2. Of course, this is a single item. If there are multiple items, the key value of $re You can use foreach to retrieve it in a loop.
Admin.php (model deletion operation)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = '14'; /*单条数据删除操作 ,同上面的单条查询一样,只关注where条件和传的变量$list即可 $list值自己可定 如上面$list = 14,id可自己定,删除id=14这一条数据 */ Admin::destroy(function($query) use ($list) { $query->where('id','=',$list); }); } }
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = ['1','3']; /*多条数据删除操作 ,同上面的多条查询一样,只关注where条件和传的变量$list即可 $list值自己可定 如上面$list等于一个数组,id可自己定,删除id=1和id=3两条数据 */ Admin::destroy(function($query) use ($list) { $query->where('id','in',$list); }); } }
Admin.php (model modification operation)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ // 静态方法里执行非静态方法,new static就是本类,reindex为本类的reindex方法 $method = new \ReflectionMethod(new static,'reindex'); $method->invokeArgs(new static,array()); } public function reindex(){ $id = '5'; $list = [ 'goods_id' => $goods_id, 'user_id' => $_SESSION['user_id'], ]; /* 因为isUpdate方法是非静态方法,只能用$this调用,根据手册isUpdate(true) 是更新,isUpdate(false)是查询,tp5方法有点多还有点乱,但不要紧实际写业务逻辑时, 记住固定句型即可,像下面我们只关注save里面传入什么东西即可,跟上面的where一样, 后面写条件,前面写修改的内容,将符合$list条件的sql语句中的rid字段值修改为0; $list是条件可设置多个条件,如上面的$list数组 */ $this->isUpdate(true)->save(['rid' => '0'],$list); } }
Admin. php (model new operation)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $username = 'Thinkphp'; $passwd = '123456'; /* 增加一条数据,Admin::create(),调用框架静态方法create,这里提一下Admin 是你模型的名字,如果建立的模型是user,那就写User::create(), 同样只关注create里改传入什么参数即可。新增一条数据,username插入值是$username passwd插入值是$passwd,你可以根据自己需求制定字段的值,别死板灵活点*/ Admin::create([ 'username' => $username, 'passwd' => $passwd, ]); } }
Related recommendations:The latest 10 thinkphp video tutorials
The above is the detailed content of A brief analysis of the Tp5 framework for adding, deleting, modifying and checking through models. For more information, please follow other related articles on the PHP Chinese website!