>  기사  >  PHP 프레임워크  >  모델을 통한 추가, 삭제, 수정, 확인을 위한 Tp5 프레임워크에 대한 간략한 분석

모델을 통한 추가, 삭제, 수정, 확인을 위한 Tp5 프레임워크에 대한 간략한 분석

藏色散人
藏色散人앞으로
2021-07-19 14:51:112789검색

Thinkphp5 추가, 삭제, 수정 및 확인 작업(모델 추가, 삭제, 수정 및 확인)

Thinkphp5에서 모델 추가, 삭제, 수정 및 확인 방법은 매우 간단합니다.

먼저 applicationindexcontroller 디렉터리에 컨트롤러를 만들고 이름을 Index.php

Index.php로 지정하세요. 코드는 다음과 같습니다. index 모듈이 아닌 경우 네임스페이스는 다음과 같습니다. 자신의 모듈에 해당하는 네임스페이스로 변경됩니다.

<?php

namespace app\index\controller;

use app\index\model\Admin;

class Index
{
   public function index(){

     Admin::index();
    
   }
 
}

그런 다음 applicationindexmodel 디렉터리에 모델을 만들고 이름을 Admin.php

Admin.php로 지정합니다. 코드는 다음과 같습니다. index 모듈이 아닌 경우 네임스페이스는 다음과 같습니다. 자신의 모듈에 맞게 변경되었습니다.

Admin.php (먼저 모델 쿼리 연산에 대해 이야기해보자)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

     // 设置当前模型对应的完整数据表名称

     protected $table = &#39;user&#39;;

     public static function index(){

        $list = &#39;14&#39;;



       /* 单条数据查询操作,all方法是tp5框架规定的查询方法,all里面是一个闭包,作为变量传入,

       不要纠结闭包构造,直接复制用即可,不需要关注$query是什么?框架内部实现时传值进去,

       执行where方法,只需要关注where条件和传的变量$list即可。

       $list值自己可定 如上面$list = 14,id可自己定,查询id=14这一条数据 */

       $re = Admin::all(function($query) use ($list) {

          $query->where(&#39;id&#39;,&#39;=&#39;,$list);

       });

       //echo &#39;<pre/>&#39;;var_dump($re[0]->data);

     }

}
<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

    // 设置当前模型对应的完整数据表名称
    protected $table = &#39;user&#39;;

    public static function index(){

      $list = [&#39;13&#39;,&#39;14&#39;];


      /* 这是多条查询,查询id=13和14这两条数据,同上述只需要关注where里面的条件即可,

       如果查name或其它字段把where里的id改成name即可,$list也封装好了,

       你可以传值进去,就像我上面$list 等于一个数组,*/

       $re = Admin::all(function($query) use ($list) {

           $query->where(&#39;id&#39;,&#39;in&#39;,$list);

       });

       // echo &#39;<pre/>&#39;;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(&#39;user&#39;)

          ->alias(&#39;a&#39;)

          ->join(&#39;sessions w&#39;,&#39;a.id = w.id&#39;)

          ->select();

          // var_dump($re);die;

     }

}
namespace app\index\model;

use think\Model;

use think\Db;

class Admin extends Model
{

  // 数据表名  这里要提一下,表名必须是完整的表名,要带上表前缀,哪怕在配置文件里面设置了表前缀。
  protected $table = &#39;fa_kindex&#39;;

  // 查询
  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(&#39;id&#39;,&#39;asc&#39;),   //根据id升序查询
                $query->limit($offset , $limit)   
                $query->field(&#39;id&#39;,true);   //查询除id字段外的所有字段数据
                // 查询符合id = 1的id,name字段的数据,查询结果按id升序排列
                $query->field(&#39;id&#39;,&#39;name&#39;)->where(&#39;id=1&#39;)->order(&#39;id&#39;,&#39;asc&#39;);
                
              */
			   $query->order(&#39;id&#39;,&#39;asc&#39;)->limit($offset , $limit)->field(&#39;id&#39;,true)->where(&#39;rid =&#39;.$rid);

			} 
		);
	   
	 return $result;

   }

}

물론 많은 사람들이 쿼리를 하면 클래스 객체를 얻는다고 하는데, tp3.2는 쿼리 결과를 직접 반환하는 반면, tp5는 쿼리 결과를 직접 반환하지 않기 때문이다. 쿼리 결과는 인스턴스화된 클래스 전체를 반환하고 쿼리 결과를 클래스의 데이터 속성에 넣습니다. 그러면 데이터를 어떻게 얻을 수 있을까요? 클래스를 인스턴스화한 후 클래스의 속성에 액세스하는 방법을 상상해 보세요. 이해하려면 -> 가서 가져오세요,

echo &#39;<pre/>&#39;;var_dump($re[0]->data);

이렇게 하면 tp3.2와 마찬가지로 데이터를 얻을 수 있습니다. 물론 항목이 여러 개인 경우 키 값을 얻을 수 있습니다. $re는 foreach 루프에 있습니다.

Admin.php (모델 삭제 작업)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

     // 设置当前模型对应的完整数据表名称

     protected $table = &#39;user&#39;;

     public static function index(){



        $list = &#39;14&#39;;

    

        /*单条数据删除操作 ,同上面的单条查询一样,只关注where条件和传的变量$list即可

        $list值自己可定 如上面$list = 14,id可自己定,删除id=14这一条数据 */

        Admin::destroy(function($query) use ($list) {

            $query->where(&#39;id&#39;,&#39;=&#39;,$list);

        });

     }

  }
<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

    // 设置当前模型对应的完整数据表名称
    protected $table = &#39;user&#39;;

    public static function index(){

      $list = [&#39;1&#39;,&#39;3&#39;];

     /*多条数据删除操作 ,同上面的多条查询一样,只关注where条件和传的变量$list即可

         $list值自己可定 如上面$list等于一个数组,id可自己定,删除id=1和id=3两条数据 */

        Admin::destroy(function($query) use ($list) {

           $query->where(&#39;id&#39;,&#39;in&#39;,$list);

        });

     }

}

Admin.php (모델 수정 작업)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

      // 设置当前模型对应的完整数据表名称

      protected $table = &#39;user&#39;;

      public static function index(){

        // 静态方法里执行非静态方法,new static就是本类,reindex为本类的reindex方法

        $method = new \ReflectionMethod(new static,&#39;reindex&#39;);

        $method->invokeArgs(new static,array());

      }      



      public function reindex(){

         $id = &#39;5&#39;;

         $list = [
            &#39;goods_id&#39;  =>  $goods_id,
            &#39;user_id&#39;   =>  $_SESSION[&#39;user_id&#39;],
         ];

       /*

       因为isUpdate方法是非静态方法,只能用$this调用,根据手册isUpdate(true)

       是更新,isUpdate(false)是查询,tp5方法有点多还有点乱,但不要紧实际写业务逻辑时,

       记住固定句型即可,像下面我们只关注save里面传入什么东西即可,跟上面的where一样,

       后面写条件,前面写修改的内容,将符合$list条件的sql语句中的rid字段值修改为0;
       $list是条件可设置多个条件,如上面的$list数组

      */

       $this->isUpdate(true)->save([&#39;rid&#39; => &#39;0&#39;],$list);

  }

}

Admin.php (모델 추가 작업)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

     // 设置当前模型对应的完整数据表名称
     protected $table = &#39;user&#39;;

     public static function index(){


         $username = &#39;Thinkphp&#39;;

          $passwd = &#39;123456&#39;;



       /* 增加一条数据,Admin::create(),调用框架静态方法create,这里提一下Admin

         是你模型的名字,如果建立的模型是user,那就写User::create(),

         同样只关注create里改传入什么参数即可。新增一条数据,username插入值是$username

         passwd插入值是$passwd,你可以根据自己需求制定字段的值,别死板灵活点*/

          Admin::create([

             &#39;username&#39; => $username,

             &#39;passwd&#39; => $passwd,

          ]);

   }

}

관련 추천 : 최신 10 thinkphp 동영상 튜토리얼

위 내용은 모델을 통한 추가, 삭제, 수정, 확인을 위한 Tp5 프레임워크에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제