Maison > développement back-end > tutoriel php > thinkphp implémente l'ajout, la suppression, la modification et la requête de base

thinkphp implémente l'ajout, la suppression, la modification et la requête de base

大家讲道理
Libérer: 2023-03-05 17:14:01
original
5089 Les gens l'ont consulté

ThinkPHP fournit des méthodes d'exploitation des données flexibles et pratiques, qui réalisent non seulement les quatre opérations de base des opérations de base de données (CURD) : La mise en œuvre de création, de lecture, de mise à jour et de suppression intègre également de nombreuses méthodes pratiques d'exploitation des données. Ensuite, nous apprendrons ensemble ces méthodes d'exploitation de base et préparerons un exemple pour que chacun puisse approfondir sa compréhension à la fin.

Nouvelles données

  // 实例化一个User模型对象    
  $User = new UserModel();    
  // 然后给数据对象赋值    
  $User->name = 'ThinkPHP';    
  $User->email = 'ThinkPHP@gmail.com';    
  // 然后就可以保存新建的User对象了    
  $User->add();    
  //如果需要锁实例化模型对象的时候传入数据,可以使用    
    $data['name'] = 'ThinkPHP';    
    $data['email'] = 'ThinkPHP@gmail.com';    
    $User = new UserModel($data);    
    $User->add();    
    // 或者直接在add方法传入要新建的数据    
    $data['name'] = 'ThinkPHP';    
    $data['email'] = 'ThinkPHP@gmail.com';    
    $User = new UserModel();    
    $User->add($data);
Copier après la connexion


En général, il est peu probable que les objets de données de l'application soient écrits via une affectation manuelle, mais il existe un processus de création d'objets de données. ThinkPHP fournit une méthode create pour créer des objets de données, puis effectuer d'autres opérations d'ajout ou de modification.


$User = D("User");    
$User->create(); // 创建User数据对象,默认通过表单提交的数据进行创建    
$User->add(); // 新增表单提交的数据
Copier après la connexion


<🎜 La méthode >Create prend en charge la création d'objets de données par d'autres moyens, par exemple à partir d'autres objets de données ou de tableaux, etc.


$data[&#39;name&#39;] = &#39;ThinkPHP&#39;;    
$data[&#39;email&#39;] = &#39;ThinkPHP@gmail.com&#39;;    
$User->create($data);    
 // 从User数据对象创建新的Member数据对象    
$Member = D("Member");    
$Member->create($User);
Copier après la connexion

支持新增多条记录


$User = new UserModel();    
$data[0][&#39;name&#39;] = &#39;ThinkPHP&#39;;    
$data[0][&#39;email&#39;] = &#39;ThinkPHP@gmail.com&#39;;    
$data[1][&#39;name&#39;] = &#39;流年&#39;;    
 $data[1][&#39;email&#39;] = &#39;liu21st@gmail.com&#39;;    
$User->addAll($data);
Copier après la connexion


Sous la base de données MySql, une instruction SQL sera automatiquement utilisée pour insérer plusieurs données.

Requête des enregistrements
Lire la base de données I Je pense que l'enregistrement est la chose la plus intéressante dans les opérations de base de données. Quiconque a écrit une base de données texte sait qu'il n'est pas difficile de sauvegarder et de supprimer des données (ce n'est rien de plus qu'une question de standardisation et d'efficacité). être recherché de diverses manières les données requises. ThinkPHPGrâce à divers efforts, les opérations de requête de base de données sont devenues faciles et ThinkPHP est devenue riche en contenu.
ThinkPHP
Il existe un accord très clair sur le fait que les méthodes de requête de données uniques et de requête de données multiples sont distinctes, ou vous pouvez penser que parfois vous ne savez pas quoi interroger . Que les données soient uniques ou multiples, mais une chose est claire, devez-vous renvoyer une donnée ou souhaitez-vous renvoyer un ensemble de données. Étant donné que les méthodes de fonctionnement pour les deux types de données renvoyées sont complètement différentes, quelle que soit la méthode renvoyée, nous pouvons opérer directement dans l'objet modèle, et bien sûr, il peut également être transmis sous forme de données aux variables dont vous avez besoin.
Prenons d'abord l'exemple le plus simple. Si nous voulons interroger un enregistrement utilisateur dont la clé primaire est 8, nous pouvons. Utilisez certaines des méthodes ci-dessous :


 $User->find(8);
Copier après la connexion


这个作为查询语言来说是最为直观的,如果查询成功,查询的结果直接保存在当前的数据对象中,在进行下一次查询操作之前,我们都可以提取,例如获取查询的结果数据:


$name = $User->name;    
$email = $User->email;
Copier après la connexion


遍历查询到的数据对象属性


 foreach ($User as $key=>$val){    
  echo($key.&#39;:&#39;.$val);    
  }
Copier après la connexion


// 或者进行相关的数据更改和保存操作
也可以用变量保存下来以便随时使用。

$user = $User->find(8);
Copier après la connexion

对于上面的查询条件,我们还可以使用getById来完成相同的查询

 $User->getById(8);
Copier après la connexion

需要注意的是,对于find方法来说,即使查询结果有多条记录,也只会返回符合条件的第一条记录,如果要返回符合要求的所有记录,请使用findAll方法。


  // 查询主键为1、3、8的记录集     
  $User->findAll(&#39;1,3,8&#39;);     
   // 遍历数据列表    
    foreach ($User as $vo){dump($vo->name);    
    }
Copier après la connexion

更新记录
了解了查询记录后,更新操作就显得非常简单了。

  // 还可以使用下面的方式更新
  $User->find(1); // 查找主键为1的数据    
  $User->name = &#39;TOPThink&#39;; // 修改数据对象    
  $User->save(); // 保存当前数据对象    
  $User->score = &#39;(score+1)&#39;; // 对用户的积分加1    
  $User->save();
Copier après la connexion


如果不是使用数据对象的方式来保存,可以传入要保存的数据和条件

 $data[&#39;id&#39;] = 1;   
 $data[&#39;name&#39;] = &#39;TopThink&#39;;   
 $User->save($data);
Copier après la connexion

除了save方法外,你还可以使用setField方法来更新特定字段的值,例如:

 $User->setField(&#39;name&#39;,&#39;TopThink&#39;,&#39;id=1&#39;);
Copier après la connexion

同样可以支持对字段的操作

 $User->setField(&#39;score&#39;,&#39;(score+1)&#39;,&#39;id=1&#39;);    
 // 或者改成下面的    
 $User->setInc(&#39;score&#39;,&#39;id=1&#39;);
Copier après la connexion

删除记录

如果你的主键是自动增长类型,不需要传入主键的值就可以新建数据,并且如果插入数据成功的话,Add方法的返回值就是最新插入的主键值,可以直接获取。

 $User->find(2);    
 $User->delete(); // 删除查找到的记录    
 $User->delete(&#39;5,6&#39;); // 删除主键为5、6的数据    
 $User->deleteAll(); // 删除查询出来的所有数据
Copier après la connexion

看完上面的代码,我们就来写个实战的例子加深下。

数据显示页面:MainController.class.php中的方法

<?php
namespace Home\Controller;
use Think\Controller;
class MainController extends Controller
{    

    //例题:数据的增删改
    //显示所有数据:
    function ShowInfo()
    {
        $model=D("Info");
        $attr=$model->field("info.code as infocode,info.name as infoname,info.sex,nation.name as nationname,info.birthday")->join("nation on info.nation=nation.code")->select();
        $this->assign("shuju",$attr);
        $this->display();
        
    }
    //删除数据:
    function ShanChu($code)
    {
        $model=D("Info");
        $r=$model->delete($code);
        if($r)
        {
            $this->success("删除成功",U("ShowInfo"));
        }
        else
        {        
            $this->error("删除失败");
        }
        
    }
    //添加数据:
    function TianJia()
    {
        if(empty($_POST))
        {
            $model=D("Nation");
            $attr=$model->select();
            $this->assign("shuju",$attr);
            $this->display();
        }
        else
        {
            $model=D("Info");
            $model->create();//自动收集表单数据入库
            $model->Sex=$_POST["Sex"]=="男"?true:false;
            $r=$model->add();
            if($r)
            {
                $this->success("添加成功!","Tianjia",3);
            }
            else
            {
                $this->error("添加失败!","Tianjia",3);
            }
        }
    }
    //修改数据:
    function XiuGai($code)
    {
        $model=D("info");
        $modeln=D("nation");
        if(empty($_POST))
        {
            $attr=$model->find($code);
            $attrn=$modeln->select();
            
            $this->assign("shuju",$attr);
            $this->assign("shujun",$attrn);
            $this->display();
        }
        else
        {
            
            $model->create();
            $model->Sex=$_POST["Sex"]=="男"?true:false;
            $r=$model->save();
            if($r)
            {
                $this->success("修改成功",U("Showinfo"));    
            }
            else
            {
                $this->error("修改失败!");
            }
            
        }
    }
}
Copier après la connexion

模板的数据显示:ShowInfo.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>主页面</title>
</head>

<body>
<h2>主页面</h2>
<table width="70%" cellpadding="0" cellspacing="0" border="1">
<tr>
<td>代号</td>
<td>姓名</td>
<td>性别</td>
<td>民族</td>
<td>生日</td>
<td>操作</td>
</tr>

<foreach name="shuju" item="v">
<tr>
<td><{$v.infocode}></td>
<td><{$v.infoname}></td>
<td><{$v["sex"]?"男":"女"}></td>
<td><{$v.nationname}></td>
<td><{$v.birthday}></td>
<td><a href="__CONTROLLER__/XiuGai/code/<{$v.infocode}>">修改</a>  <a href="__CONTROLLER__/ShanChu/code/<{$v.infocode}>">删除</a></td>
</tr>
</foreach>
</table>
<a href="__CONTROLLER__/TianJia">添加数据</a>
</body>
</html>
Copier après la connexion

添加数据模板显示:Tianjia.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>添加数据</title>
</head>

<body>
<h1>添加数据</h1>
<form action="/index.php/Article/edit" method="post">
<p>代号:<input type="text" name="Code" /></p>
<p>姓名:<input type="text" name="Name" /></p>
<p>性别:<input type="radio" name="Sex" value="男" />男  
          <input type="radio" name="Sex" value="女" />女
</p>
<p>民族:
<select name="Nation">
<foreach name="shuju" item="v">
<option value="<{$v.code}>"><{$v.name}></option>
</foreach>
</select>
</p>
<p>生日:<input type="text" name="Birthday" /></p>
<input type="submit" value="添加" />
</form>
<a href="__CONTROLLER__/ShowInfo">返回主页面</a>
</body>
</html>
Copier après la connexion

修改模板数据显示:Xiugai.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>修改数据</title>
</head>

<body>
<h1>修改数据</h1>
<form action="/index.php/Article/edit/code/<{$shuju.code}>" method="post">
<input type="hidden" name="Code" value="<{$shuju.code}>" />
<p>姓名:<input type="text" name="Name" value="<{$shuju.name}>"/></p>
<p>性别:<input type="radio" name="Sex" value="男" <{$shuju["sex"]?"checked=&#39;checked&#39;":""}>/>男  
          <input type="radio" name="Sex" value="女" <{$shuju["sex"]?"":"checked=&#39;checked&#39;"}> />女
</p>
<p>民族:
<select name="Nation">
<foreach name="shujun" item="v">
    <if condition="$shuju[&#39;nation&#39;]==$v[&#39;code&#39;]">
        <option selected="selected" value="<{$v.code}>"><{$v.name}></option>
     <else/>
         <option value="<{$v.code}>"><{$v.name}></option>
     </if>
</foreach>
</select>
</p>
<p>生日:<input type="text" name="Birthday" value="<{$shuju.birthday}>" /></p>
<input type="submit" value="修改" />
</form>
<a href="__CONTROLLER__/ShowInfo">返回主页面</a>
</body>
</html>
Copier après la connexion


主页面:

thinkphp implémente lajout, la suppression, la modification et la requête de base

添加数据

thinkphp implémente lajout, la suppression, la modification et la requête de base

thinkphp implémente lajout, la suppression, la modification et la requête de base

Modifier les données :

thinkphp implémente lajout, la suppression, la modification et la requête de base

thinkphp implémente lajout, la suppression, la modification et la requête de base

Supprimer les données :

thinkphp implémente lajout, la suppression, la modification et la requête de base

Ci-dessus sont les méthodes de base et des exemples d'ajout, de suppression, de modification et d'archivage dans Thinkphp présentés par le site PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal