Heim  >  Artikel  >  php教程  >  ThinkPHP3.1 Schnellstart (2) Daten-CURD

ThinkPHP3.1 Schnellstart (2) Daten-CURD

黄舟
黄舟Original
2016-12-20 11:33:031193Durchsuche

Im vorherigen Artikel haben wir die Grundlagen von ThinkPHP kennengelernt, wie man einen Controller und eine Vorlage erstellt und wie man die M-Methode verwendet. In diesem Artikel wird die CURD-Operation von Daten erläutert und weitere Datenoperationen untersucht.

CURD

CURD ist eine Abkürzung in der Datenbanktechnologie. Die Grundfunktionen verschiedener Parameter in der allgemeinen Projektentwicklung sind CURD. Es stellt Erstellungs-, Aktualisierungs-, Lese- und Löschvorgänge dar. CURD definiert grundlegende atomare Operationen zur Verarbeitung von Daten. Der Grund dafür, dass CURD auf den technischen Schwierigkeitsgrad erhoben wird, liegt darin, dass die Leistung beim Abschluss einer aggregationsbezogenen Aktivität mit CURD-Vorgängen in mehreren Datenbanksystemen stark variieren kann, wenn sich die Datenbeziehungen ändern.
CURD verwendet in bestimmten Anwendungen nicht unbedingt die Methoden zum Erstellen, Aktualisieren, Lesen und Löschen, die von ihnen ausgeführten Funktionen sind jedoch dieselben. ThinkPHP verwendet beispielsweise die Methoden add, save, select und delete, um die CURD-Operationen des Modells darzustellen.

Daten erstellen

In den meisten Fällen übermittelt der CURD-Vorgang Daten normalerweise über ein Formular. Zuerst erstellen wir eine add.html-Vorlagendatei im Tpl/Form-Verzeichnis des Projekts ist:

Titel: ;br/>

Inhalt:

Dann müssen wir auch eine FormAction.class im Aktionsverzeichnis des Projekts erstellen .php-Datei, Sie müssen vorerst nur die FormAction-Klasse definieren, ohne irgendwelche Operationsmethoden hinzuzufügen. Der Code lautet wie folgt:

Klasse FormAction erweitert Aktion{

}

Als nächstes besuchen Sie

http://localhost/app/index.php/Form/add

Sie können die Formularseite sehen. Wir haben die Add-Operationsmethode nicht definiert Controller, aber offensichtlich ist der Zugriff normal. Da ThinkPHP prüft, ob die entsprechende Vorlagendatei vorhanden ist, wenn die entsprechende Operationsmethode nicht gefunden wird, rendert der Controller die Vorlagendatei direkt und gibt sie aus. Für Betriebsmethoden ohne eigentliche Logik müssen wir also nur die entsprechende Vorlagendatei direkt definieren.
Wir können sehen, dass die im Formular definierte Übermittlungsadresse die Einfügeoperation für das Formularmodul ist. Um die Formularübermittlungsdaten zu verarbeiten, müssen wir die Einfügeoperationsmethode wie folgt in der FormAction-Klasse hinzufügen:

Klasse FormAction erweitert Action{

öffentliche Funktion insert(){

$Form = D('Form');

if($Form-> create()) {

$result = $Form->add();

if($result) {

$this->success('The Operation war erfolgreich! ');

                                                                                                                         der Wert des Primärschlüssels. Wenn es sich nicht um einen automatisch inkrementierenden Primärschlüssel handelt, gibt der Rückgabewert die Anzahl der eingefügten Daten an. Wenn false zurückgegeben wird, weist dies auf einen Schreibfehler hin.

Modell

Um das Testen zu erleichtern, erstellen wir zunächst eine think_form-Tabelle in der Datenbank:

TABELLE ERSTELLEN, WENN „think_form“ NICHT EXISTIERT (

`id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(255) NOT NULL,

`content` varchar(255) NOT NULL,

`create_time` int(11) unsigned NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

Im Gegensatz zur M-Funktion verwenden wir die D-Funktion Entsprechende Modellklasse, erstellen wir die folgende Modellklasse. Die Definitionsspezifikation der Modellklasse lautet: Modellname + Model.class.php (der Modellname wird in Kamel-Schreibweise definiert und der erste Buchstabe wird großgeschrieben)
Wir erstellen die Datei FormModel.class.php unter der Lib/Model Verzeichnis des Projekts und fügen Sie den Code wie folgt hinzu:

class FormModel erweitert Model {

// Automatische Validierung definieren

protected $_validate = array(

array('title','require ', 'Title must'),

);

// Automatische Vervollständigung definieren

protected $_auto = array(

array('create_time' ,'time',1,'function'),

);

}

wird hauptsächlich zur automatischen Überprüfung verwendet und Wir werden es für bestimmte Zwecke verwenden. Die anderen Kapitel werden separat besprochen und hier vorerst übersprungen. Was wir nur verstehen müssen, ist, dass, wenn Sie die D-Funktion zum Instanziieren einer Modellklasse verwenden, diese im Allgemeinen einer Datenmodellklasse entsprechen muss und die Erstellungsmethode die vom Formular übermittelten Daten automatisch überprüft und automatisch vervollständigt (falls definiert). ), wenn die automatische Überprüfung fehlschlägt, können Sie die Überprüfungsaufforderungsinformationen über die getError-Methode des Modells abrufen. Wenn die Überprüfung erfolgreich ist, bedeutet dies, dass das Datenobjekt erfolgreich erstellt wurde, es jedoch derzeit nur im Speicher gespeichert wird, bis wir das Add aufrufen Methode zum Schreiben der Daten in die Datenbank. Damit ist ein vollständiger Erstellungsvorgang abgeschlossen, sodass Sie sehen können, dass ThinkPHP beim Erstellen von Daten zwei Schritte verwendet:
Der erste Schritt besteht darin, das Datenobjekt mithilfe der Methode „create“ zu erstellen.
Der zweite Schritt besteht darin, die zu verwenden add method to Das aktuelle Datenobjekt wird in die Datenbank geschrieben.
Natürlich können Sie den ersten Schritt überspringen und direkt mit dem zweiten Schritt fortfahren, aber diese Art der Vorverarbeitung hat mehrere Vorteile:
1 Egal wie komplex das Formular ist, die Erstellungsmethode kann problemlos erstellt werden eine Codezeile Datenobjekt;
2. Vor dem Schreiben von Daten können die Daten überprüft und ergänzt werden.
Tatsächlich verfügt die Erstellungsmethode auch über viele funktionale Vorgänge mit nur einem Zweck, um die Sicherheit und Wirksamkeit sicherzustellen der in die Datenbank geschriebenen Daten.
Lassen Sie uns die Auswirkung der Formularübermittlung überprüfen. Wenn wir das Formular direkt absenden, ohne einen Titel einzugeben, gibt das System eine Meldung aus, dass der Titel so lauten muss.

ThinkPHP3.1 Schnellstart (2) Daten-CURD

Wenn wir das Formular erfolgreich absenden, werden wir sehen, dass das Feld „create_time“ in den in die Datentabelle geschriebenen Daten bereits einen Wert hat. Dieser wird durch die automatische Vervollständigung geschrieben das Modell.

ThinkPHP3.1 Schnellstart (2) Daten-CURD

Wenn Ihre Daten vollständig intern und nicht über ein Formular geschrieben werden (d. h. Sie können der Sicherheit der Daten voll und ganz vertrauen), können Sie die Add-Methode direkt verwenden. wie zum Beispiel:

$Form = D('Form');

$data['title'] = 'ThinkPHP';

$data['content'] = ' Formularinhalt';

$Form->add($data);

kann auch Objektmodusoperationen unterstützen:

$Form = D('Form' );

$Form->title = 'ThinkPHP';

$Form->content = 'Formularinhalt';

$Form->add( );

Beim Betrieb im Objektmodus muss die Add-Methode keine Daten übergeben und erkennt automatisch die aktuelle Datenobjektzuweisung.

Daten lesen

Wenn wir die Daten erfolgreich schreiben, können wir die Daten lesen. Im vorherigen Artikel wissen wir bereits, dass wir die Select-Methode verwenden können, um einen Datensatz abzurufen. Hier erhalten wir einzelne Daten über die Find-Methode. Die Leseoperationsmethode ist wie folgt definiert:

öffentliche Funktion read($id=0){

$Form = M('Form');

// Daten lesen

$data = $Form->find( $id);

if($data) {

$this->data = $data;// Vorlagenvariablenzuweisung

}else{

$this-> error('data error');

}

$this->display();

}

Die Leseoperationsmethode hat einen Parameter $id, was bedeutet, dass wir die ID-Variable akzeptieren können in der URL (Wir werden es später im Variablenkapitel ausführlich beschreiben. Der Grund, warum hier die M-Methode anstelle der D-Methode verwendet wird, liegt darin, dass die Find-Methode eine Methode in der Basismodellklasse Model ist und daher keine Notwendigkeit besteht um Overhead für die Instanziierung der FormModel-Klasse zu verschwenden (auch wenn sie als FormModel-Klasse definiert wurde). Hier wird der AR-Modus verwendet, sodass keine Abfragebedingungen übergeben werden. find($id) bedeutet, die Daten zu lesen, deren Primärschlüssel der $id-Wert ist. Die Rückgabe der Suchmethode ist ein Array im folgenden Format:

array(

'id' => 5 ,

'title' => 'Testtitel',

'content' => 'Testinhalt',

'status' => 🎜>

)

Dann können wir die Daten in der Vorlage ausgeben, eine Lesevorlagendatei hinzufügen,

< ;td>{$data.id}

   

< ;/table>

Nach Fertigstellung können wir

http:// besuchen localhost/app/index.php/Form/read/id/1

zum Anzeigen

Wenn Sie nur den Wert eines bestimmten Felds abfragen müssen, können Sie auch die getField-Methode verwenden, zum Beispiel:

$Form = M("Form");

// Holen Sie sich den Titel

$title = $Form->where('id=3')- >getField('title');

Die obige Verwendung bedeutet, die Daten mit dem Titelfeldwert ID-Wert 3 abzurufen. Tatsächlich hat die getField-Methode viele Verwendungsmöglichkeiten, aber das Abrufen des Werts eines bestimmten Felds ist die häufigste Verwendung der getField-Methode.
Abfrageoperationen sind die am häufigsten verwendeten Operationen, insbesondere wenn es sich um komplexe Abfragebedingungen handelt. Wir werden die Abfrage im Kapitel zur Abfragesprache ausführlicher erläutern.

Daten aktualisieren

Nachdem wir die Daten erfolgreich geschrieben und gelesen haben, können wir die Daten bearbeiten. Zuerst fügen wir eine Vorlagendatei zur Bearbeitung des Bearbeitungsformulars .html hinzu folgt:


Titel:

Inhalt:

Das Bearbeiten einer Vorlage unterscheidet sich vom Hinzufügen eines neuen Formulars. Sie müssen der Vorlage also Variablen zuweisen Diesmal müssen Sie der FormAction-Klasse zwei Operationsmethoden hinzufügen:

public function edit($id=0){

$Form = M('Form');

$this->vo = $Form->find($id);

$this->display();

}

public function update( ){

$Form = D('Form');

if($Form->create()) {

$result = $Form -> save();

if($result) {

$this->success('Der Vorgang war erfolgreich!' >             $this->error(' Schreibfehler!'); getError());

}

}

Nach Abschluss können wir auf

zugreifen

http://localhost/app/index.php/Form/edit/id/1


Der Datenaktualisierungsvorgang verwendet die Speichermethode in ThinkPHP, wie Sie sehen Wie Sie sehen können, können wir auch die Erstellungsmethode verwenden, um die vom Formular übermittelten Daten zu erstellen. Die Speichermethode aktualisiert automatisch das aktuelle Datenobjekt in der Datenbank, und die Aktualisierungsbedingung ist tatsächlich der Primärschlüssel der Tabelle Wir müssen den Wert des Primärschlüssels als Grund verwenden, warum versteckte Felder zusammen übermittelt werden.
Wenn der Aktualisierungsvorgang nicht auf der Übermittlung des Formulars beruht, kann er wie folgt geschrieben werden:

$Form = M("Form">// Zuweisung des Zu ändernde Datenobjektattribute

$data['id'] = 5;

$data['title'] = 'ThinkPHP';

$data[' content'] = 'ThinkPHP3.1 Version release';

$Form->save($data); // Geänderte Daten gemäß den Bedingungen speichern

Die Speichermethode identifiziert automatisch die Primärschlüsselfeld im Datenobjekt und aktualisieren Sie es als Bedingung. Natürlich können Sie die Aktualisierungsbedingungen auch explizit übergeben:

$Form = M("Form");

// Zuweisung der zu ändernden Datenobjektattribute

$data['title'] = 'ThinkPHP';

$data['content'] = 'ThinkPHP3.1-Version veröffentlicht';

$Form->where(' id= 5')->save($data); // Geänderte Daten gemäß Bedingungen speichern

kann auch in den Objektmodus geändert werden:

$Form = M("Form" ) ;

//Zuweisung der zu ändernden Datenobjektattribute

$Form->title = 'ThinkPHP';

$Form->content = 'ThinkPHP3 .1 Versionsfreigabe';

$Form->where('id=5')->save(); // Speichern Sie die geänderten Daten gemäß den Bedingungen

Der Weg zu Datenobjekte zuweisen, Die Speichermethode muss keine Daten übergeben, sie werden automatisch erkannt.

Der Rückgabewert der Speichermethode ist die Anzahl der betroffenen Datensätze. Wenn false zurückgegeben wird, bedeutet dies einen Aktualisierungsfehler.


Manchmal müssen wir nur den Wert eines bestimmten Felds ändern und können dann die setField-Methode verwenden, ohne jedes Mal die Speichermethode aufzurufen.

$Form = M("Form");

// Titelwert ändern

$Form->where('id=5')->setField ('title','ThinkPHP');

Für statistische Felder bietet das System auch praktischere setInc- und setDec-Methoden.

Zum Beispiel:


$User = M("User"); // Instanziieren Sie das Benutzerobjekt

$User->where('id=5')-> setInc('score',3); // Die Punkte des Benutzers werden um 3 erhöht

$User->where('id=5')->setInc('score'); Die Punkte des Benutzers werden um 1 erhöht

$User->where('id=5')->setDec('score',5); // Die Punkte des Benutzers werden um 5 reduziert

$User-> where('id=5')->setDec('score'); // Die Punkte des Benutzers werden um 1 reduziert

Daten löschen

Das Löschen von Daten ist sehr einfach. Sie müssen nur die Löschmethode aufrufen, zum Beispiel:

$Form = M('Form');

$Form->delete( 5);

bedeutet, dass der zu löschende Primärschlüssel 5 Daten ist. Die Löschmethode kann je nach Löschbedingungen einzelne Daten oder mehrere Daten löschen, zum Beispiel:

$Benutzer = M("User"); // Das Benutzerobjekt instanziieren

$User->where('id=5')->delete(); // Benutzerdaten mit der ID 5 löschen

$User->delete('1,2 ,5'); // Benutzerdaten mit den Primärschlüsseln 1, 2 und 5 löschen

$User->where('status=0 ')->delete(); // Alle Status löschen Benutzerdaten von 0

Der Rückgabewert der Löschmethode ist die Anzahl der gelöschten Datensätze. Wenn der Rückgabewert falsch ist, bedeutet dies einen SQL-Fehler . Wenn der Rückgabewert 0 ist, bedeutet dies, dass keine Daten gelöscht wurden.

Zusammenfassung

Jetzt beherrschen Sie im Grunde die CURD-Operation von ThinkPHP und haben gelernt, die Methoden zum Erstellen, Hinzufügen, Speichern und Löschen von ThinkPHP zu verwenden. Es gibt zwei weitere getField und setField-Methoden für Feldoperationen. Im nächsten Artikel werden wir uns genauer mit der Verwendung der von ThinkPHP bereitgestellten Abfragesprache befassen.


Das Obige ist der Inhalt von ThinkPHP3.1 Quick Start (2) Data CURD. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php. cn)

id:
Titel: td> Inhalt: {$data.content }
Stellungnahme:
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