模型层Model添加修改和删除数据

Thinkphp里往数据库添加数据:

第一种方式以数组的方式添加

<?php
namespace HomeController;
use ThinkController;

class TestController extends  Controller   //如果不继承父类它就不是一个操作方法。
{
    public  function index(){
        $n = M("nation");        //造一个民族表的模型对象
        
        //第一种方式是数组的方式来添加数据
        $arr = array("Code"=>"n0039","Name"=>"东京遇上洛杉矶");
        $n->add($arr);           //对象调用add添加数据的方法来进行往表里面添加数据。
    }
}

第二种添加数据的方式,使用AR的方式添加(映射)

<?php
namespace HomeController;
use ThinkController;

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 HomeController;
use ThinkController;

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 HomeController;
use ThinkController;

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 HomeController;
use ThinkController;

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 HomeController;
use ThinkController;

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 HomeController;
use ThinkController;

class MainController extends  Controller   //如果不继承父类它就不是一个操作方法。
{
    public function shanchu($code,$name){
        //$n = M("Nation");
        //$n->delete("n119");
        
        echo $code;
        //是在操作方法的这个参数列表里面写形参,通过形参来取值。  
    }
}

这是MVC里面比较标准的传值、取值方式。

这篇博客主要讲的是增删改和传值取值的内容。

 

原文地址:https://www.cnblogs.com/shandayuan/p/7455980.html