Implementation method of adding content to database in thinkphp5

黄舟
Release: 2023-03-16 19:06:01
Original
1481 people have browsed it

When a new framework is installed, I usually don’t know what to do. Then make a write function first.

First of all, make preparations and connect to the database.

The configuration file is in database.php under 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,
];
Copy after login

After setting it up, leave it alone and create a controller first

In the default downloaded collection, there is an index folder in the application folder.

It is a folder used to store controllers, classes and templates, and the name can be modified.

If you have used 3.2, it will be easy to understand, it is equivalent to the original home file.

Create three folders in this folder first

Then create a new index.php file in the controller folder (actually there is one by default one).

Write code like this in the class class


public function indexs()
{
    return '我打开控制器了';
}
Copy after login

Enter the server name/index/index/indexs in the URL bar

Okay Saw a line of text.

Add it and introduce the template first.

First add use think\View; and introduce the template library.


$view = new View;
return $view->fetch('模板名');
Copy after login

So where to put the template. The controller folder has a view folder

If you drag the template file directly into it, an error will be reported.

Look at the second half of the error path. /application/index\view\index\adda.html

application/index/view can be found

Then there is another folder name and file name.

This folder corresponds to the name of the controller, which means a corresponding folder must be created. Then drag the template in to call it. Of course, a complete framework will not only have this method. Other details will be studied later.

Two commonly used ways of writing form submissions, input('post.xxx') refers to getting the post value.


//调用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;
Copy after login

Relatively speaking, I personally prefer this way of writing. Use Request to complete the addition. (It will be good for using laravel in the future)


//引入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;
}
Copy after login

When it comes to adding data, automatic verification is definitely needed.

This time the automatic verification can be written in a separate file. Create a Validate folder in the index folder, and create a php file with the same name as the Model folder inside. easy to use.

Sample


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'],
  ];
}
Copy after login

Then change the controller part


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

Finally make one to prevent duplication Submission and remote submission form token function: Add {:token()} to the form form in the template, then make modifications to the verification rules, and add a token to the verification rules. As follows:


'title' => 'require|max:25|token',
Copy after login

At this point, the addition of the article comes to an end.

The above is the detailed content of Implementation method of adding content to database in thinkphp5. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!