Heim > PHP-Framework > Denken Sie an PHP > Eine kurze Analyse des Tp5-Frameworks zum Hinzufügen, Löschen, Ändern und Durchsuchen von Modellen

Eine kurze Analyse des Tp5-Frameworks zum Hinzufügen, Löschen, Ändern und Durchsuchen von Modellen

藏色散人
Freigeben: 2021-07-23 10:43:47
nach vorne
2825 Leute haben es durchsucht

Thinkphp5-Vorgänge zum Hinzufügen, Löschen, Ändern und Überprüfen (Modelle hinzufügen, löschen, ändern und durchchecken)

Das Hinzufügen, Löschen, Ändern und Durchsuchen von Modellen in Thinkphp5 ist sehr einfach.

Erstellen Sie zunächst einen Controller im Verzeichnis applicationindexcontroller und benennen Sie ihn: Index.php

Index.php. Ich habe den Controller unter dem Modul applicationindexcontroller erstellt geändert werden in Der Namespace, der Ihrem eigenen Modul entspricht.

<?php

namespace app\index\controller;

use app\index\model\Admin;

class Index
{
   public function index(){

     Admin::index();
    
   }
 
}
Nach dem Login kopieren

Dann erstellen Sie ein Modell im Verzeichnis applicationindexmodel und nennen es Admin.php. Der Code lautet wie folgt: Ich habe das Modell unter dem Modul applicationindexmodel erstellt geändert, um Ihrem eigenen Namensraum zu entsprechen.

Admin.php (Sprechen wir zuerst über die Modellabfrageoperation)

<?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);

     }

}
Nach dem Login kopieren
<?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);

   }

}
Nach dem Login kopieren
<?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;

     }

}
Nach dem Login kopieren
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;

   }

}
Nach dem Login kopieren

Natürlich sagen viele Leute, dass sie nach der Abfrage Klassenobjekte erhalten, weil tp3.2 die Abfrageergebnisse direkt zurückgibt, während tp5 nicht direkt zurückgibt Die Abfrageergebnisse geben die gesamte instanziierte Klasse zurück und fügen die Abfrageergebnisse in das Datenattribut der Klasse ein. Wie kann man also nach der Instanziierung auf die Daten in der Klasse zugreifen? Verstehen Sie, verwenden Sie -> Holen Sie es sich,

rrree

Auf diese Weise können Sie die Daten abrufen, genau wie bei tp3.2. Wenn es mehrere Elemente gibt, können Sie den Schlüsselwert erhalten Ich befinde mich in einer foreach-Schleife.

Admin.php (Modelllöschvorgang)

echo &#39;<pre/>&#39;;var_dump($re[0]->data);
Nach dem Login kopieren
<?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);

        });

     }

  }
Nach dem Login kopieren

Admin.php (Modelländerungsvorgang)

<?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);

        });

     }

}
Nach dem Login kopieren

Admin.php (Modelladditionsvorgang)

<?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);

  }

}
Nach dem Login kopieren

Verwandte Empfehlungen:
Das neueste 10 thinkphp Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Analyse des Tp5-Frameworks zum Hinzufügen, Löschen, Ändern und Durchsuchen von Modellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage