Implementierungsmethode zum Hinzufügen von Inhalten zur Datenbank in thinkphp5

黄舟
Freigeben: 2023-03-16 19:06:01
Original
1506 Leute haben es durchsucht

Wenn ein neues Framework installiert wird, weiß ich normalerweise nicht, was ich tun soll. Dann erstellen Sie zunächst eine Schreibfunktion.

Treffen Sie zunächst die Vorbereitungen und stellen Sie eine Verbindung zur Datenbank her.

Die Konfigurationsdatei befindet sich in der Datenbank.php unter Anwendung


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,
];
Nach dem Login kopieren

Lassen Sie sie nach dem Einrichten in Ruhe und erstellen Sie zunächst einen Controller

In der standardmäßig heruntergeladenen Sammlung gibt es einen Indexordner im Anwendungsordner.

Es handelt sich um einen Ordner zum Speichern von Controllern, Klassen und Vorlagen. Der Name kann geändert werden.

Wenn Sie 3.2 verwendet haben, ist es leicht zu verstehen, es entspricht der ursprünglichen Home-Datei.

Erstellen Sie zunächst drei Ordner in diesem Ordner

Erstellen Sie dann eine neue index.php-Datei im Controller-Ordner (tatsächlich gibt es standardmäßig eine).

Schreiben Sie Code wie diesen in der Klassenklasse


public function indexs()
{
    return '我打开控制器了';
}
Nach dem Login kopieren

Geben Sie den Servernamen/Index/Index/Indexe in die URL-Leiste ein

Eine Textzeile ist zu sehen.

Fügen Sie es hinzu und stellen Sie zuerst die Vorlage vor.

Fügen Sie zunächst thinkView hinzu und führen Sie die Vorlagenbibliothek ein.


$view = new View;
return $view->fetch('模板名');
Nach dem Login kopieren

Wohin mit der Vorlage? Der Controller-Ordner verfügt über einen Ansichtsordner

Wenn Sie die Vorlagendatei direkt hineinziehen, wird ein Fehler gemeldet.

Sehen Sie sich die zweite Hälfte des Fehlerpfads an. /application/indexviewindexadda.html

application/index/view finden Sie

Dann gibt es einen anderen Ordnernamen und Dateinamen.

Dieser Ordner entspricht dem Namen des Controllers, was bedeutet, dass ein entsprechender Ordner erstellt werden muss. Ziehen Sie dann die Vorlage hinein, um sie aufzurufen. Natürlich verfügt ein vollständiges Framework nicht nur über diese Methode. Weitere Details werden später untersucht.

Zwei häufig verwendete Methoden zum Schreiben von Formulareinsendungen: input('post.xxx') bezieht sich auf das Abrufen des Beitragswerts.


//调用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;
Nach dem Login kopieren

Relativ gesehen bevorzuge ich persönlich diese Art zu schreiben. Verwenden Sie Request, um die Hinzufügung abzuschließen. (Es wird in Zukunft gut für die Verwendung von Laravel sein)


//引入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;
}
Nach dem Login kopieren

Wenn es um das Hinzufügen von Daten geht, ist eine automatische Überprüfung unbedingt erforderlich.

Diesmal kann die automatische Verifizierung in eine separate Datei geschrieben werden. Erstellen Sie einen Validate-Ordner im Indexordner und erstellen Sie eine PHP-Datei mit demselben Namen wie der Model-Ordner darin. Einfach zu bedienen.

Beispiel


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'],
  ];
}
Nach dem Login kopieren

Dann wechselt zum Controller-Teil


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

Endlich Erstellen Sie eine Formular-Token-Funktion, um wiederholte Übermittlungen und Remote-Übermittlungen zu verhindern: Fügen Sie {:token()} zum Formular in der Vorlage hinzu, nehmen Sie dann Änderungen an den Verifizierungsregeln vor und fügen Sie den Verifizierungsregeln ein Token hinzu. Wie folgt:


'title' => 'require|max:25|token',
Nach dem Login kopieren

An diesem Punkt endet der Teil zum Hinzufügen von Artikeln.

Das obige ist der detaillierte Inhalt vonImplementierungsmethode zum Hinzufügen von Inhalten zur Datenbank in thinkphp5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage