模型層Model添加修改和刪除數據


Thinkphp里往數據庫添加數據:

第一種方式以數組的方式添加

<?php
namespace Home\Controller;
use Think\Controller;

class TestController extends  Controller   //如果不繼承父類它就不是一個操作方法。
{
    public  function index(){
        $n = M("nation");        //造一個民族表的模型對象
        
        //第一種方式是數組的方式來添加數據
        $arr = array("Code"=>"n0039","Name"=>"東京遇上洛杉磯");
        $n->add($arr);           //對象調用add添加數據的方法來進行往表里面添加數據。
    }
}

第二種添加數據的方式,使用AR的方式添加(映射)

<?php
namespace Home\Controller;
use Think\Controller;

class TestController extends  Controller   //如果不繼承父類它就不是一個操作方法。
{
    public  function index(){
        $n = M("nation");        //造一個民族表的模型對象
        
        $n->Code="n0102";    //用映射AR的方式來添加數據,Code是數據表里面的列名,相當於映射成對象的成員變量,給成員變量Code設定個值為n0102
        $n->Name="謝謝謝謝明君";    //Name相當於映射成該對象的一個成員變量,給這個Name的成員變量定個值"謝謝謝謝明君"。
        $n->add();            //再用$n該對象調用add()方法來將這個對象定好成員變量Code Name值的對象相當於一條數據一樣添加到表中。
    }
}

所謂映射就是把數據表相當於映射成一個類,表名就叫做類名,表里面的每一條數據就作為一個對象。列名就作為這個類里面的成員變量。

第三種添加數據的方式,自動收集表單

<?php
namespace Home\Controller;
use Think\Controller;

class MainController extends  Controller   //如果不繼承父類它就不是一個操作方法。
{
    public  function index(){
        
        $n = M("nation");        //造一個民族表的模型對象
        
        //實現兩個邏輯
        //1.顯示有表單的頁面
        //2.添加進去數據
//因為實現第一個邏輯不需要傳過來數據,而實現第二個邏輯需要有數據提交過來才可以執行第二個邏輯。所以就可以將這
//兩個要實現的邏輯添加的一個操作方法里面去。通過判斷來區別是要走哪一個邏輯。
        if(empty($_POST)){
        //在這里需要做個模板頁面。 在Home模塊下View文件夾Main控制器里面有個index.html模板文件在里面需要做個表單用來提交獲取數據。
            $this->show();
        }else{
//第三種添加數據的方式,自動收集表單。這個create方法可以把它叫做自動收集表單的方法。也可以叫做創建數據的方法
            $n->create();        //這個create方法它自動從提交的表單里面來獲取數據並且創建出來可以直接往數據庫里面存儲的
            $n->add();            //再調用add的方法進行添加數據。    
        }
    }
    public function _empty(){
        echo "您訪問的頁面有誤";
    }
    
}

<title>無標題文檔</title>
</head>

<body>

<form action="__ACTION__" method="post">
    <div>代號:<input type="text" name="Code" /></div>
    <div>名稱:<input type="text" name="Name" /></div>
    <input type="submit" value="添加" />
</form>

</body>
</html>

當我點擊提交的時候,還要跳到Home模塊下Main控制器里的index操作方法里面。所以action還要指向當前的操作方法。

__SELF__代表的是瀏覽器里面所有的路徑地址也包括?后面傳的值。
__ACTION__代表的是指向當前操作方法的路徑。
__CONTROLLER__代表的是指向當前控制器的路徑。然后如果需要也可以在后面拼接個其他的操作方法來訪問例如(__CONTROLLER__/test)


var_dump(get_defined_constants(true));這句代碼表示的是可以顯示一下當前的這個TP框架所定義的所有的常量信息。

修改數據庫中的數據

<?php
namespace Home\Controller;
use Think\Controller;

class MainController extends  Controller   //如果不繼承父類它就不是一個操作方法。
{
    public function xiugai(){        //修改數據庫中數據的方法
        $n = M("Nation");
    
        //1.數組的方法來修改數據庫中的數據。
        //$arr = array("Code"=>"n119","Name"=>"幾人游");
        //$n->save($arr);
        
        //2.AR的方式修改數據。
        //$n->Code = "n119";
        //$n->Name = "好幾人游";
        
        //$n->save();
        
        //3.自動收集表單的方式(跟添加數據的第三種方式一樣)
        //$n->create();    //創建數據
        //$n->save();        //跟添加數據不同的是這里使用的是save方法。用來修改,而添加的則是使用add方法。
        
    }
}        

刪除數據庫中的數據:

<?php
namespace Home\Controller;
use Think\Controller;

class MainController extends  Controller   //如果不繼承父類它就不是一個操作方法。
{
    public function shanchu(){
        $n = M("Nation");        
        $n->delete("n119");  //括號里給想要刪除的主鍵值就可以。如果想刪除多個數據就在括號里面的分號里面加逗號隨便加想要刪除的主鍵值就行了
    }
}

怎么手動寫Get方式提交數據

在地址欄中的shanchu方法后面寫個?code=11來傳送數據

地址欄中: localhost/0306/thinkphp/index.php/Home/Main/shanchu?code=11

<?php
namespace Home\Controller;
use Think\Controller;

class MainController extends  Controller   //如果不繼承父類它就不是一個操作方法。
{
    public function shanchu(){
        //$n = M("Nation");
        //$n->delete("n119");
        
        echo $_GET["code"];
    }
}

 TP框架獨有的瀏覽器里傳值方式:

這個TP框架還支持使用形參列表來取值的方式。

地址欄中輸入: localhost/0306/thinkphp/index.php/Home/Main/shanchu/code/11/name/sss

<?php
namespace Home\Controller;
use Think\Controller;

class MainController extends  Controller   //如果不繼承父類它就不是一個操作方法。
{
    public function shanchu($code,$name){
        //$n = M("Nation");
        //$n->delete("n119");
        
        echo $code;
        //是在操作方法的這個參數列表里面寫形參,通過形參來取值。  
    }
}

這是MVC里面比較標准的傳值、取值方式。

 

 

這篇博客主要講的是增刪改和傳值取值的內容。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM