溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

thinkphp5框架如何通過模型進行增刪改查

發(fā)布時間:2021-07-20 08:08:53 來源:億速云 閱讀:201 作者:chen 欄目:編程語言

這篇文章主要介紹“thinkphp5框架如何通過模型進行增刪改查”,在日常操作中,相信很多人在thinkphp5框架如何通過模型進行增刪改查問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”thinkphp5框架如何通過模型進行增刪改查”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Thinkphp5增刪改查操作(通過模型進行增刪改查)

Thinkphp5怎么通過模型增刪改查,非常簡單。

首先在application\index\controller目錄下建立控制器,命名為:Index.php

Index.php 代碼如下,我這里是在application\index\controller 模塊下建立的控制器,如果不是index模塊,你的命名空間要改成自己模塊對應(yīng)的命名空間。

<?php

namespace app\index\controller;

use app\index\model\Admin;

class Index
{
   public function index(){

     Admin::index();
    
   }
 
}

接著在application\index\model 目錄下建立模型 ,命名為Admin.php

Admin.php 代碼如下,我這里是在application\index\model 模塊下建立的模型,如果不是index模塊,你的命名空間要改成自己模塊對應(yīng)的命名空間。

Admin.php (先講模型查詢操作)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

     // 設(shè)置當前模型對應(yīng)的完整數(shù)據(jù)表名稱

     protected $table = 'user';

     public static function index(){

        $list = '14';



       /* 單條數(shù)據(jù)查詢操作,all方法是tp5框架規(guī)定的查詢方法,all里面是一個閉包,作為變量傳入,

       不要糾結(jié)閉包構(gòu)造,直接復(fù)制用即可,不需要關(guān)注$query是什么?框架內(nèi)部實現(xiàn)時傳值進去,

       執(zhí)行where方法,只需要關(guān)注where條件和傳的變量$list即可。

       $list值自己可定 如上面$list = 14,id可自己定,查詢id=14這一條數(shù)據(jù) */

       $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
{

    // 設(shè)置當前模型對應(yīng)的完整數(shù)據(jù)表名稱
    protected $table = 'user';

    public static function index(){

      $list = ['13','14'];


      /* 這是多條查詢,查詢id=13和14這兩條數(shù)據(jù),同上述只需要關(guān)注where里面的條件即可,

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

       你可以傳值進去,就像我上面$list 等于一個數(shù)組,*/

       $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查詢,查詢兩個表以上的數(shù)據(jù) Db::table 要加上use think\Db;

          這里查的是user表的id等于sessions表的id,兩個表里的符合條件的全部數(shù)據(jù) */

          $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
{

  // 數(shù)據(jù)表名  這里要提一下,表名必須是完整的表名,要帶上表前綴,哪怕在配置文件里面設(shè)置了表前綴。
  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) {

              /* 閉包構(gòu)造 $query可以銜接order,limit,where,field等條件。但不能寫成
                $query->select();因為這樣select方法會執(zhí)行兩次 可以寫成
                $query->order('id','asc'),   //根據(jù)id升序查詢
                $query->limit($offset , $limit)   
                $query->field('id',true);   //查詢除id字段外的所有字段數(shù)據(jù)
                // 查詢符合id = 1的id,name字段的數(shù)據(jù),查詢結(jié)果按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;

   }

}

當然,很多人說查詢后,得到的是類的對象,那是因為,tp3.2就是直接返回查詢結(jié)果,而tp5沒有直接返回查詢結(jié)果,返回的是整個實例化類,把查詢結(jié)果放到類的data屬性里面,所以要取出數(shù)據(jù)怎么取?想象一下實例化類后怎么訪問類中的屬性,就不難理解了, 用->去取,

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

這樣就可以拿到數(shù)據(jù)了,跟tp3.2一樣,當然了我這是單條的,如果多條的話,$re的鍵值你可以循環(huán)的方式foreach去取。

Admin.php (模型刪除操作)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

     // 設(shè)置當前模型對應(yīng)的完整數(shù)據(jù)表名稱

     protected $table = 'user';

     public static function index(){



        $list = '14';

    

        /*單條數(shù)據(jù)刪除操作 ,同上面的單條查詢一樣,只關(guān)注where條件和傳的變量$list即可

        $list值自己可定 如上面$list = 14,id可自己定,刪除id=14這一條數(shù)據(jù) */

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

            $query->where('id','=',$list);

        });

     }

  }
<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

    // 設(shè)置當前模型對應(yīng)的完整數(shù)據(jù)表名稱
    protected $table = 'user';

    public static function index(){

      $list = ['1','3'];

     /*多條數(shù)據(jù)刪除操作 ,同上面的多條查詢一樣,只關(guān)注where條件和傳的變量$list即可

         $list值自己可定 如上面$list等于一個數(shù)組,id可自己定,刪除id=1和id=3兩條數(shù)據(jù) */

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

           $query->where('id','in',$list);

        });

     }

}

Admin.php (模型修改操作)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

      // 設(shè)置當前模型對應(yīng)的完整數(shù)據(jù)表名稱

      protected $table = 'user';

      public static function index(){

        // 靜態(tài)方法里執(zhí)行非靜態(tài)方法,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方法是非靜態(tài)方法,只能用$this調(diào)用,根據(jù)手冊isUpdate(true)

       是更新,isUpdate(false)是查詢,tp5方法有點多還有點亂,但不要緊實際寫業(yè)務(wù)邏輯時,

       記住固定句型即可,像下面我們只關(guān)注save里面?zhèn)魅胧裁礀|西即可,跟上面的where一樣,

       后面寫條件,前面寫修改的內(nèi)容,將符合$list條件的sql語句中的rid字段值修改為0;
       $list是條件可設(shè)置多個條件,如上面的$list數(shù)組

      */

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

  }

}

Admin.php (模型新增操作)

<?php

namespace app\index\model;

use think\Model;

class Admin extends Model
{

     // 設(shè)置當前模型對應(yīng)的完整數(shù)據(jù)表名稱
     protected $table = 'user';

     public static function index(){


         $username = 'Thinkphp';

          $passwd = '123456';



       /* 增加一條數(shù)據(jù),Admin::create(),調(diào)用框架靜態(tài)方法create,這里提一下Admin

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

         同樣只關(guān)注create里改傳入什么參數(shù)即可。新增一條數(shù)據(jù),username插入值是$username

         passwd插入值是$passwd,你可以根據(jù)自己需求制定字段的值,別死板靈活點*/

          Admin::create([

             'username' => $username,

             'passwd' => $passwd,

          ]);

   }

}

到此,關(guān)于“thinkphp5框架如何通過模型進行增刪改查”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI