CakePHP でデータをクエリおよび更新するにはどうすればよいですか?

WBOY
リリース: 2023-06-03 14:16:02
オリジナル
1397 人が閲覧しました

CakePHP は、便利な ORM (オブジェクト リレーショナル マッピング) 機能を提供する人気の PHP フレームワークで、データベースのクエリと更新を非常に簡単にします。

この記事では、CakePHP でデータをクエリおよび更新する方法を紹介します。単純なクエリと更新から始めて、条件と関連モデルを使用してより複雑なデータのクエリと更新を行う方法を見ていきます。

  1. 基本的なクエリ

まず、最も単純なクエリの作成方法を見てみましょう。 「Users」というデータ テーブルがあり、すべてのユーザー レコードを取得したいとします。

CakePHP では、find メソッドを使用してデータを取得できます。サンプル コードは次のとおりです。

$users = $this->Users->find('all');
ログイン後にコピー

これは、すべてのユーザー レコードを含む配列を返します。 1 つのレコードだけを取得したい場合は、find('first') メソッドを使用できます。

$user = $this->Users->find('first');
ログイン後にコピー

これにより、最初のユーザー レコードが返されます。 find('list') メソッドを使用して、キーと値のペアのハッシュ テーブルを取得することもできます。ここで、キーはレコードの主キーであり、値は指定されたフィールドです。たとえば、ユーザー ID と名前のハッシュ テーブルを取得したい場合は、次のコードを使用できます。

$users = $this->Users->find('list', ['keyField' => 'id', 'valueField' => 'name']);
ログイン後にコピー
  1. 条件付きクエリ

実行する必要がある場合条件付きクエリ CakePHP は、クエリ結果のデータをフィルタリングする便利な方法を提供します。 where メソッドと andWhere メソッドを使用して、プログラムでクエリ条件を作成できます。以下はサンプル コードです。

$users = $this->Users->find()
    ->where(['age >' => 18, 'name LIKE' => '%John%'])
    ->andWhere(['gender' => 'male'])
    ->all();
ログイン後にコピー

上記のコードでは、where メソッドと andWhere メソッドを使用してクエリ条件を指定します。最初の条件は、18 歳以上で名前に「John」が含まれるユーザーを指定します。 2 番目の条件は、性別が「男性」のユーザーを指定します。最後に、all メソッドを使用して、条件を満たすすべてのユーザー レコードを取得します。

IN、NOT IN、BETWEEN などの複雑なクエリ条件を使用することもできます。サンプル コードは次のとおりです。

$users = $this->Users->find()
    ->where(['age BETWEEN' => [18, 25]])
    ->andWhere(['state IN' => ['CA', 'NY', 'TX']])
    ->all();
ログイン後にコピー

上記のコードでは、BETWEEN 条件と IN 条件を使用して、18 ~ 25 歳でステータスが CA、NY、または TX のユーザーを指定しました。同様に、all メソッドを使用して、基準を満たすすべてのユーザー レコードを取得します。

  1. 相関クエリ

CakePHP では、相関クエリを簡単に実行できます。ユーザー レコードに加えて「投稿」というデータ テーブルがあり、各ユーザーが複数の投稿を持っているとします。ユーザーとそのすべての投稿をクエリする方法を見てみましょう。

まず、User モデルで Posts の関連付けを定義する必要があります。 belongsTo メソッドを使用して、データ テーブルを User モデルに関連付けることができます。以下はサンプル コードです:

class UsersTable extends Table
{
    public function initialize(array $config)
    {
        $this->hasMany('Posts');
    }
}
ログイン後にコピー

上記のコードでは、hasMany メソッドを使用して、User モデルと Posts データ テーブルの間の関連付けを指定します。

これで、関連付けられたクエリの find メソッドを使用して、すべてのユーザーとそのすべての記事を取得できるようになります。以下にサンプル コードを示します。

$users = $this->Users->find('all', [
    'contain' => ['Posts']
]);
ログイン後にコピー

上記のコードでは、contain オプションを使用して、関連付けるデータ テーブルを指定します。配列を介して複数の関連付けを指定することもできます。たとえば、User モデルが Comments テーブルにも関連付けられている場合、次のように書くことができます:

$users = $this->Users->find('all', [
    'contain' => ['Posts', 'Comments']
]);
ログイン後にコピー

関連付けられたクエリを実行するとき、CakePHP は内部結合 (INNER JOIN) を使用して 2 つのデータ テーブルを結合して取得します。関連データ。 LEFT JOIN または RIGHT JOIN を使用する場合は、関連付け定義でそれらを指定できます。

  1. データ更新

データベース内のレコードを更新する必要がある場合、CakePHP は更新操作を実行する便利な方法を提供します。 updateAll メソッドを使用して、プログラムによってレコードを更新できます。以下はサンプル コードです。

$result = $this->Users->updateAll(
    ['age' => 25],
    ['name LIKE' => '%John%']
);
ログイン後にコピー

上記のコードでは、updateAll メソッドを使用して、名前に「John」が含まれる 25 歳のすべてのユーザーを更新します。 updateAll メソッドは 2 つのパラメーターを受け入れます。最初のパラメータは、設定する列と値を指定します。上の例では、年齢を 25 に設定しています。 2 番目のパラメータは、レコードを更新する条件を指定します。

1 つのレコードのみを更新する場合は、save メソッドを使用できます。以下はサンプル コードです:

$user = $this->Users->get(1);
$user->age = 25;
$this->Users->save($user);
ログイン後にコピー

上記のコードでは、get メソッドを使用して ID 1 のユーザー レコードを取得します。次に、レコードの経過時間を更新し、save メソッドを使用して変更を保存します。

レコードを削除する必要がある場合は、CakePHP が提供する deleteAll および delete メソッドを使用することもできます。

概要

この記事では、CakePHP でデータのクエリと更新を実行する方法を紹介しました。単純なクエリと更新メソッドの使用方法と、より複雑なクエリと更新に条件付きモデルとリレーショナル モデルを使用する方法を学びました。 CakePHP が提供する便利な ORM 機能を使用すると、アプリケーションのニーズに合わせてデータベースを簡単に操作できます。

以上がCakePHP でデータをクエリおよび更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート