Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Daten in CakePHP abfragen und aktualisieren?

Wie kann ich Daten in CakePHP abfragen und aktualisieren?

WBOY
WBOYOriginal
2023-06-03 14:11:021340Durchsuche

CakePHP ist ein beliebtes PHP-Framework, das praktische ORM-Funktionen (Object Relational Mapping) bietet und das Abfragen und Aktualisieren der Datenbank sehr einfach macht.

In diesem Artikel erfahren Sie, wie Sie Daten in CakePHP abfragen und aktualisieren. Wir beginnen mit einfachen Abfragen und Aktualisierungen und arbeiten uns nach oben, um zu sehen, wie Bedingungen und zugehörige Modelle verwendet werden, um komplexere Daten abzufragen und zu aktualisieren.

  1. Einfache Abfrage

Sehen wir uns zunächst an, wie man die einfachste Abfrage erstellt. Angenommen, wir haben eine Datentabelle namens „Benutzer“ und möchten alle Benutzerdatensätze abrufen.

In CakePHP können wir die Find-Methode verwenden, um Daten abzurufen. Hier ist ein Beispielcode:

$users = $this->Users->find('all');

Dies gibt ein Array zurück, das alle Benutzerdatensätze enthält. Wenn Sie nur einen Datensatz abrufen möchten, können Sie die Methode find('first') verwenden:

$user = $this->Users->find('first');

Dadurch wird der erste Benutzerdatensatz zurückgegeben. Sie können auch die Methode find('list') verwenden, um eine Hash-Tabelle mit Schlüssel-Wert-Paaren abzurufen, wobei der Schlüssel der Primärschlüssel des Datensatzes und der Wert das angegebene Feld ist. Wenn Sie beispielsweise eine Hash-Tabelle mit Benutzer-IDs und Namen erhalten möchten, können Sie den folgenden Code verwenden:

$users = $this->Users->find('list', ['keyField' => 'id', 'valueField' => 'name']);
  1. Bedingte Abfrage

Wenn Sie eine bedingte Abfrage durchführen müssen, bietet CakePHP eine praktische Möglichkeit, Daten zu filtern Abfrageergebnisse. Sie können die Methoden where und andWhere verwenden, um Abfragebedingungen programmgesteuert zu erstellen. Das Folgende ist ein Beispielcode:

$users = $this->Users->find()
    ->where(['age >' => 18, 'name LIKE' => '%John%'])
    ->andWhere(['gender' => 'male'])
    ->all();

Im obigen Code verwenden wir die Methoden where und andWhere, um die Abfragebedingungen anzugeben. Die erste Bedingung gibt Benutzer an, die älter als 18 Jahre sind und „John“ im Vornamen haben. Die zweite Bedingung gibt Benutzer mit dem Geschlecht „männlich“ an. Schließlich verwenden wir die Methode all, um alle Benutzerdatensätze abzurufen, die die Kriterien erfüllen.

Sie können auch komplexe Abfragebedingungen wie IN, NOT IN, BETWEEN usw. verwenden. Hier ist ein Beispielcode:

$users = $this->Users->find()
    ->where(['age BETWEEN' => [18, 25]])
    ->andWhere(['state IN' => ['CA', 'NY', 'TX']])
    ->all();

Im obigen Code haben wir die Bedingungen BETWEEN und IN verwendet, um Benutzer anzugeben, die zwischen 18 und 25 Jahre alt sind und deren Status CA, NY oder TX ist. Ebenso verwenden wir die all-Methode, um alle Benutzerdatensätze abzurufen, die die Kriterien erfüllen.

  1. Verwandte Abfrage

In CakePHP können Sie ganz einfach verwandte Abfragen durchführen. Angenommen, wir haben zusätzlich zu den Benutzerdatensätzen eine Datentabelle namens „Beiträge“ und jeder Benutzer hat mehrere Beiträge. Sehen wir uns an, wie Sie einen Benutzer und alle seine Beiträge abfragen.

Zuerst müssen wir die Posts-Zuordnung im Benutzermodell definieren. Wir können die Methode „gehörtTo“ verwenden, um die Datentabelle dem Benutzermodell zuzuordnen. Das Folgende ist ein Beispielcode:

class UsersTable extends Table
{
    public function initialize(array $config)
    {
        $this->hasMany('Posts');
    }
}

Im obigen Code verwenden wir die hasMany-Methode, um die Zuordnung zwischen dem Benutzermodell und der Posts-Datentabelle anzugeben.

Jetzt können wir die Suchmethode der zugehörigen Abfrage verwenden, um alle Benutzer und alle ihre Artikel abzurufen. Das Folgende ist ein Beispielcode:

$users = $this->Users->find('all', [
    'contain' => ['Posts']
]);

Im obigen Code verwenden wir die Option „Contain“, um die zuzuordnende Datentabelle anzugeben. Sie können auch mehrere Assoziationen über ein Array angeben. Wenn Ihr Benutzermodell beispielsweise auch mit einer Kommentartabelle verknüpft ist, können Sie so schreiben:

$users = $this->Users->find('all', [
    'contain' => ['Posts', 'Comments']
]);

Bei der Ausführung zugeordneter Abfragen verwendet CakePHP innere Verknüpfungen (INNER JOIN), um die beiden Datentabellen zu kombinieren und die zugehörigen Daten zu erhalten. Wenn Sie einen LEFT JOIN oder RIGHT JOIN verwenden möchten, können Sie diese in der Assoziationsdefinition angeben.

  1. Datenaktualisierung

Wenn Sie Datensätze in der Datenbank aktualisieren müssen, bietet CakePHP eine praktische Möglichkeit, Aktualisierungsvorgänge durchzuführen. Mit der updateAll-Methode können Sie Datensätze programmgesteuert aktualisieren. Hier ist ein Beispielcode:

$result = $this->Users->updateAll(
    ['age' => 25],
    ['name LIKE' => '%John%']
);

Im obigen Code verwenden wir die updateAll-Methode, um alle Benutzer mit einem Alter von 25 Jahren zu aktualisieren, deren Name „John“ enthält. Die updateAll-Methode akzeptiert zwei Parameter. Der erste Parameter gibt die festzulegende Spalte und den festzulegenden Wert an. Im obigen Beispiel haben wir das Alter auf 25 festgelegt. Der zweite Parameter gibt die Kriterien für die Aktualisierung des Datensatzes an.

Wenn Sie nur einen Datensatz aktualisieren möchten, können Sie die Speichermethode verwenden. Hier ist ein Beispielcode:

$user = $this->Users->get(1);
$user->age = 25;
$this->Users->save($user);

Im obigen Code haben wir die get-Methode verwendet, um den Benutzerdatensatz mit der ID 1 abzurufen. Anschließend aktualisieren wir das Alter des Datensatzes und verwenden die Speichermethode, um die Änderungen zu speichern.

Wenn Sie Datensätze löschen müssen, können Sie auch die von CakePHP bereitgestellten Methoden deleteAll und delete verwenden.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie man Datenabfragen und -aktualisierungen in CakePHP durchführt. Wir haben gelernt, wie man einfache Abfrage- und Aktualisierungsmethoden verwendet und wie man bedingte und relationale Modelle für komplexere Abfragen und Aktualisierungen verwendet. Mithilfe der praktischen ORM-Funktionalität von CakePHP können Sie die Datenbank ganz einfach an Ihre Anwendungsanforderungen anpassen.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten in CakePHP abfragen und aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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