Maison > développement back-end > tutoriel php > Méthode d'implémentation d'ajout de contenu à la base de données dans thinkphp5

Méthode d'implémentation d'ajout de contenu à la base de données dans thinkphp5

黄舟
Libérer: 2023-03-16 19:06:01
original
1523 Les gens l'ont consulté

Lorsqu’un nouveau framework est installé, je ne sais généralement pas quoi faire. Créez ensuite d’abord une fonction d’écriture.

Tout d'abord, faites les préparatifs et connectez-vous à la base de données.

Le fichier de configuration se trouve dans database.php sous l'application


return [
  // 数据库类型
  'type'      => 'mysql',
  // 服务器地址
  'hostname'    => '127.0.0.1',
  // 数据库名
  'database'    => 'shoptest',
  // 用户名
  'username'    => 'root',
  // 密码
  'password'    => '',
  // 端口
  'hostport'    => '3306',
  // 连接dsn
  'dsn'       => '',
  // 数据库连接参数
  'params'     => [],
  // 数据库编码默认采用utf8
  'charset'     => 'utf8',
  // 数据库表前缀
  'prefix'     => '',
  // 数据库调试模式
  'debug'      => true,
  // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
  'deploy'     => 0,
  // 数据库读写是否分离 主从式有效
  'rw_separate'   => false,
  // 读写分离后 主服务器数量
  'master_num'   => 1,
  // 指定从服务器序号
  'slave_no'    => '',
  // 是否严格检查字段是否存在
  'fields_strict'  => true,
  // 数据集返回类型
  'resultset_type' => 'array',
  // 自动写入时间戳字段
  'auto_timestamp' => false,
  // 时间字段取出后的默认时间格式
  'datetime_format' => 'Y-m-d H:i:s',
  // 是否需要进行SQL性能分析
  'sql_explain'   => false,
];
Copier après la connexion

Après l'avoir configuré, laissez-le tranquille et créez d'abord un contrôleur

Dans la collection téléchargée par défaut, il y a un dossier d'index dans le dossier de l'application.

C'est un dossier utilisé pour stocker les contrôleurs, les classes et les modèles, et le nom peut être modifié.

Si vous avez utilisé la version 3.2, ce sera facile à comprendre, c'est équivalent au fichier home d'origine.

Créez d'abord trois dossiers dans ce dossier

Créez ensuite un nouveau fichier index.php dans le dossier du contrôleur (en fait, il y en a un par défaut).

Écrivez le code comme celui-ci dans la classe class


public function indexs()
{
    return '我打开控制器了';
}
Copier après la connexion

Entrez le nom/index/index/index du serveur dans la barre d'URL

Une ligne de texte est visible.

Ajoutez-le et présentez d'abord le modèle.

Ajoutez d'abord l'utilisation de thinkView ; présentez la bibliothèque de modèles.


$view = new View;
return $view->fetch('模板名');
Copier après la connexion

Alors, où mettre le modèle. Le dossier du contrôleur a un dossier d'affichage

Si vous y faites glisser le fichier modèle directement, une erreur sera signalée.

Regardez la seconde moitié du chemin d'erreur. /application/indexviewindexadda.html

application/index/view peut être trouvé

Ensuite, il y a un autre nom de dossier et un autre nom de fichier.

Ce dossier correspond au nom du contrôleur, ce qui signifie qu'un dossier correspondant doit être créé. Faites ensuite glisser le modèle pour l'appeler. Bien entendu, un framework complet n’aura pas seulement cette méthode. D'autres détails seront étudiés ultérieurement.

Deux méthodes couramment utilisées pour rédiger des soumissions de formulaires, input('post.xxx') fait référence à l'obtention de la valeur de la publication.


//调用Db类
use think\Db;
$data = ['title' => input('post.title'), 'content' => input('post.title')];
Db::table('blogmsg')->insert($data);
//建立model的写法
$mod = new \app\index\model\Blogmsg;
$mod->title = input('post.title');
$mod->content = input('post.content');
$mod->save();
echo $mod->id;
Copier après la connexion

Relativement parlant, je préfère personnellement cette façon d'écrire. Utilisez Request pour terminer l’ajout. (Ce sera bien pour utiliser Laravel à l'avenir)


//引入Request。
use think\Request;
public function add(Request $req){
  //如果添加的内容需要处理,先单独取出然后赋值进去($req->post('title')可以获取其中的值)
  $a = rtrim($req->post('title'),' ');
  $req->post(['title'=>$a]);
  //准备添加
  $mod = new \app\index\model\Blogmsg;
  //allowField可以选择只添加哪些字段。
  $mod->allowField(['title','content'])->save($req->post());
  //获取返回的主键
  echo $mod->id;
}
Copier après la connexion

Lorsqu'il s'agit d'ajouter des données, une vérification automatique est absolument nécessaire.

Cette fois, la vérification automatique peut être écrite dans un fichier séparé. Créez un dossier Validate dans le dossier index et créez un fichier php portant le même nom que le dossier Model à l'intérieur. Facile à utiliser.

Échantillon


namespace app\index\validate;
use think\Validate;
class Blogmsg extends Validate
{
  //写规则
  protected $rule = [
    'title' => 'require|max:25',
    'content' => 'require|max:255',
  ];
  //写报错返回信息
  protected $message = [
    'title.require' => '必须填写',
    'title.max' => '不能超过25个字符',
    'content.require' => '必须填写',
    'content.max' => '不能超过255个字符',
  ];
  protected $scene = [
    'add' => ['title','content'],
    'edit' => ['title','content'],
  ];
}
Copier après la connexion

Puis changements dans la partie contrôleur


$a = $mod->validate(true)->allowField(['title','content'])->save($req->post());
if(false === $a){
  // 验证失败 输出错误信息
  dump($mod->getError());
  die;
}
Copier après la connexion

Enfin Créez une fonction de jeton de formulaire pour empêcher les soumissions répétées et les soumissions à distance : ajoutez {:token()} au formulaire dans le modèle, puis apportez des modifications aux règles de vérification et ajoutez un jeton aux règles de vérification. Comme suit :


'title' => 'require|max:25|token',
Copier après la connexion

À ce stade, la partie ajout d'article prend fin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en 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