Maison  >  Article  >  développement back-end  >  Comment interroger et mettre à jour des données dans CakePHP ?

Comment interroger et mettre à jour des données dans CakePHP ?

WBOY
WBOYoriginal
2023-06-03 14:11:021398parcourir

CakePHP est un framework PHP populaire qui fournit une fonctionnalité ORM (Object Relational Mapping) pratique, ce qui rend très facile l'interrogation et la mise à jour de la base de données.

Cet article expliquera comment interroger et mettre à jour des données dans CakePHP. Nous commencerons par des requêtes et des mises à jour simples, puis progresserons pour voir comment utiliser les conditions et les modèles associés pour interroger et mettre à jour les données de manière plus complexe.

  1. Requête de base

Tout d'abord, voyons comment créer la requête la plus simple. Supposons que nous ayons une table de données appelée « Utilisateurs » et que nous souhaitions récupérer tous les enregistrements utilisateur.

Dans CakePHP, nous pouvons utiliser la méthode find pour récupérer des données. Voici un exemple de code :

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

Cela renverra un tableau contenant tous les enregistrements utilisateur. Si vous souhaitez récupérer un seul enregistrement, vous pouvez utiliser la méthode find('first') :

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

Cela renverra le premier enregistrement utilisateur. Vous pouvez également utiliser la méthode find('list') pour récupérer une table de hachage de paires clé-valeur, où la clé est la clé primaire de l'enregistrement et la valeur est le champ spécifié. Par exemple, si vous souhaitez obtenir une table de hachage des identifiants et des noms d'utilisateurs, vous pouvez utiliser le code suivant :

$users = $this->Users->find('list', ['keyField' => 'id', 'valueField' => 'name']);
  1. Requête conditionnelle

Lorsque vous devez effectuer une requête conditionnelle, CakePHP fournit un moyen pratique de filtrer les données. résultats de la requête. Vous pouvez utiliser les méthodes Where et andWhere pour créer des conditions de requête par programmation. Voici un exemple de code :

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

Dans le code ci-dessus, nous avons utilisé les méthodes Where et andWhere pour spécifier les conditions de requête. La première condition spécifie les utilisateurs âgés de plus de 18 ans et dont le nom contient « John ». La deuxième condition spécifie les utilisateurs de genre « masculin ». Enfin, nous utilisons la méthode all pour récupérer tous les enregistrements utilisateur qui répondent aux critères.

Vous pouvez également utiliser des conditions de requête complexes, telles que IN, NOT IN, BETWEEN, etc. Voici un exemple de code :

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

Dans le code ci-dessus, nous avons utilisé les conditions BETWEEN et IN pour spécifier les utilisateurs qui ont entre 18 et 25 ans et dont le statut est CA, NY ou TX. De même, nous utilisons la méthode all pour récupérer tous les enregistrements utilisateur qui répondent aux critères.

  1. Requête associée

Dans CakePHP, vous pouvez facilement effectuer des requêtes associées. Supposons que nous ayons une table de données appelée « Messages » en plus des enregistrements d'utilisateurs, et que chaque utilisateur ait plusieurs publications. Voyons comment interroger un utilisateur et toutes ses publications.

Tout d'abord, nous devons définir l'association Posts dans le modèle User. Nous pouvons utiliser la méthode AppartientTo pour associer la table de données au modèle User. Voici un exemple de code :

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

Dans le code ci-dessus, nous utilisons la méthode hasMany pour spécifier l'association entre le modèle User et la table de données Posts.

Nous pouvons désormais utiliser la méthode find de la requête associée pour obtenir tous les utilisateurs et tous leurs articles. Voici un exemple de code :

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

Dans le code ci-dessus, nous utilisons l'option contain pour spécifier la table de données à associer. Vous pouvez également spécifier plusieurs associations via un tableau. Par exemple, si votre modèle Utilisateur est également associé à une table Commentaires, vous pouvez écrire comme ceci :

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

Lors de l'exécution des requêtes associées, CakePHP utilisera des jointures internes (INNER JOIN) pour combiner les deux tables de données afin d'obtenir les données associées. Si vous souhaitez utiliser un LEFT JOIN ou un RIGHT JOIN, vous pouvez les spécifier dans la définition de l'association.

  1. Mise à jour des données

Lorsque vous devez mettre à jour des enregistrements dans la base de données, CakePHP fournit un moyen pratique d'effectuer des opérations de mise à jour. Vous pouvez utiliser la méthode updateAll pour mettre à jour les enregistrements par programmation. Voici un exemple de code :

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

Dans le code ci-dessus, nous utilisons la méthode updateAll pour mettre à jour tous les utilisateurs âgés de 25 ans dont le nom contient "John". La méthode updateAll accepte deux paramètres. Le premier paramètre spécifie la colonne et la valeur à définir. Dans l'exemple ci-dessus, nous avons fixé l'âge à 25 ans. Le deuxième paramètre spécifie les critères pour que l'enregistrement soit mis à jour.

Si vous souhaitez mettre à jour un seul enregistrement, vous pouvez utiliser la méthode de sauvegarde. Voici un exemple de code :

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

Dans le code ci-dessus, nous avons utilisé la méthode get pour récupérer l'enregistrement utilisateur avec l'ID 1. Nous mettons ensuite à jour l'âge de l'enregistrement et utilisons la méthode de sauvegarde pour enregistrer les modifications.

Lorsque vous devez supprimer des enregistrements, vous pouvez également utiliser les méthodes deleteAll et delete fournies par CakePHP.

Résumé

Dans cet article, nous avons présenté comment effectuer une requête et une mise à jour de données dans CakePHP. Nous avons appris à utiliser des méthodes simples de requête et de mise à jour, ainsi qu'à utiliser des modèles conditionnels et relationnels pour des requêtes et des mises à jour plus complexes. En utilisant la fonctionnalité ORM pratique fournie par CakePHP, vous pouvez facilement manipuler la base de données en fonction des besoins de votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn