Heim  >  Artikel  >  PHP-Framework  >  Detaillierte Erläuterung der Modifikatoren und der automatischen Vervollständigung im thinkPHP5-Modell

Detaillierte Erläuterung der Modifikatoren und der automatischen Vervollständigung im thinkPHP5-Modell

藏色散人
藏色散人nach vorne
2021-02-11 10:13:463148Durchsuche

Die folgende Tutorial-Kolumne von thinkphp stellt Ihnen die Modifikatoren und die automatische Vervollständigung im thinkPHP5-Modell vor. Ich hoffe, dass sie Freunden, die sie benötigen, hilfreich sein wird!

Detaillierte Erläuterung der Modifikatoren und der automatischen Vervollständigung im thinkPHP5-Modell

1. Modifikator

Während des eigentlichen Entwicklungsprozesses müssen einige Felder geändert werden, wenn sie in der Tabelle gespeichert werden. Beispielsweise muss das vom Benutzer bei der Registrierung eingegebene Passwort verschlüsselt werden, wenn es in der Tabelle gespeichert wird. also wird der Modifikator generiert.器 Der Modifikator ähnelt dem Erfassungsgerät. Er muss in das Modell geschrieben werden. Die Benennungsregeln sind SET + Feldname (gemäß der Buckelmethode) + ATTR.

Beispiel: Beim Hinzufügen eines Benutzers muss das Passwort des Benutzers verschlüsselt werden.

Erstellen Sie eine Benutzertabelle Die Datenbank verfügt über mehr Datensätze und Kennwortfelder. Der durch den Kennwortmodifikator geänderte Wert.

2. Automatische Vervollständigung

Die in der tatsächlichen Entwicklung erstellten Tabellenfelder enthalten grundsätzlich Felder, die automatisch ausgefüllt werden müssen, z. B. Erstellungszeit der Aufzeichnung, Aktualisierungszeit, Ersteller-ID (Anmeldebenutzer-ID) usw. Dies ist erforderlich Verwenden Sie zu diesem Zeitpunkt die Autovervollständigungsfunktion der Tabelle. Es gibt drei Arten der automatischen Vervollständigung: automatische Vervollständigung beim Einfügen und Aktualisieren, automatische Vervollständigung beim Einfügen und automatische Vervollständigung beim Aktualisieren. Die Einstellungen werden im Modell verwendet

CREATE TABLE `tp_user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(60) NOT NULL DEFAULT '',
  `password` char(32) NOT NULL DEFAULT '',
  `mobile` varchar(15) NOT NULL DEFAULT '' COMMENT '用户手机号',
  `email` varchar(100) NOT NULL DEFAULT '',
  `sex` tinyint(3) NOT NULL DEFAULT '0' COMMENT '性别 0未知 1男 2女',
  `age` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `time` int(10) NOT NULL DEFAULT '0' COMMENT '时间',
  `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间',
  `update_time` int(10) NOT NULL DEFAULT '0' COMMENT '更新时间',
  `status` tinyint(3) NOT NULL DEFAULT '1' COMMENT '记录状态 -1删除 0禁用 1正常',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

Stellen Sie nun das Zeitfeld so ein, dass es sowohl beim Einfügen als auch beim Aktualisieren automatisch vervollständigt wird. und das Feld „create_time“ während des Einfügens. Es wird automatisch vervollständigt, wenn das Feld „update_time“ aktualisiert wird. Die Einstellungen für die automatische Vervollständigung lauten wie folgt:

namespace app\index\model;
use think\Model;
class User extends Model{
    //密码的修改器
    public function setPasswordAttr($val){
        //此处做一些对用户传入值的处理
        return md5($val);
    }
}
Fügen Sie Daten hinzu und aktualisieren Sie die Daten im Controller, um den Test abzuschließen Abbildung unten. Beim Hinzufügen von Daten werden die Felder time und create_time eingefügt. Die aktuelle Zeit wird eingefügt, und update_time ist der Standardwert 0.

Der Code zum Aktualisieren von Daten im Controller:

namespace app\index\controller;
use think\Controller;
use app\index\model\User;
class Index extends Controller{
    public function index(){
        //模拟传入的post表单数据
        $data = [
            'username' => 'Emrys',
            'password' => 'emrys',
            'email' => 'emrys126.com',
            'mobile' => '13955555555',
            'sex' => 1,
            'age' => 18
        ];

        //添加用户数据
        $res = User::create($data);
        dump($res);
    }
}

Nachdem der Aktualisierungsdatencode ausgeführt wurde Oben fügt das Feld update_time die aktuelle Zeit hinzu und der Wert des Zeitfelds wird ebenfalls auf die aktuelle Zeit aktualisiert. Der Wert von create_time hat sich nicht geändert.

Die Verwendung von Modifikatoren zur Implementierung der Funktion zur automatischen Vervollständigung erfordert das Hinzufügen von Modifikatoren für jedes Feld in jedem Modell, was zu aufgeblähtem Code führt. tp5 verfügt hierfür über eine spezielle Konfiguration. Ändern Sie das Element auto_timestamp = false in der Datenbankverbindungskonfigurationsdatei „database.php“ in „true“, um „create_time“ und „update_time“ in jeder Tabelle automatisch abzuschließen. Da die Felder „create_time“ und „update_time“ nicht unbedingt in jeder Tabelle vorhanden sind, stellt tp5 auch Methoden zur Verfügung, um sie im Modell zu konfigurieren.

//插入和更新时均自动完成的字段
protected $auto = [];

//只在插入时自动完成的字段
protected $insert = [];

//只在更新时自动完成的字段
protected $update = [];

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Modifikatoren und der automatischen Vervollständigung im thinkPHP5-Modell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen