この記事の例では、Zend_Db_Table の使用法について説明します。以下のように、皆さんと共有してください:
1. はじめに
Zend_Db_Table は Zend Framework のテーブル モジュールで、zend_db_adapter を通じてデータベースに接続し、データベース スキーマのテーブル オブジェクトをチェックし、テーブルを操作してクエリします。
2. まず、抽象クラス zend_db_table のデフォルトのデータベース アダプターを設(shè)定する必要があります (注意: このクラスは抽象クラスであるため、直接インスタンス化できません。最初にこのクラスを継承することしかできません。他のタイプのデータベース アダプターを指定しない限り、すべての zend_db_table クラス インスタンスはデフォルトのアダプターを使用します
<?php // 建立一個 adapter require_once 'Zend/Db.php'; $params = array ( 'host' => '127.0.0.1', 'username' => 'malory', 'password' => '******', 'dbname' => 'camelot' ); $db = Zend_Db::factory('PDO_MYSQL', $params); // 為所有的Zend_Db_Table對象設(shè)定默認的adapter require_once 'Zend/Db/Table.php'; Zend_Db_Table::setDefaultAdapter($db); ?>
次に、データベースに zend_db_table という名前のテーブルがあると仮定します。このテーブルは、zend_db_table クラスを継承するだけです。 RoundTable という名前の新しいクラスを作成します。その後、このクラスを使用して、データベース內(nèi)の Round_table テーブルのデータ結(jié)果を確認、取得できます。
<?php class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); ?>
3.
デフォルトでは、zend_db_table クラスはそのクラス名をデータベース內(nèi)のテーブル名として扱います (大文字と小文字が異なる場合は "_" を追加する必要があります)。たとえば、SomeTableName という名前の zend_db_table クラスは、次のテーブル "some_table_name" に対応します。クラス名をデータベースと比較したくない場合、テーブル名はこの下線付きの形式に対応しており、$_name はクラスを定義するときに再構(gòu)築できます。<?php class ClassName extends Zend_Db_Table { // 默認表名為 'class_name' // 但是我們也可以對應(yīng)其它表 protected $_name = 'another_table_name'; } ?>zend_db_table クラスのデフォルトのフィールド "id" は次のとおりです。テーブルの主キー (このフィールドは自動インクリメントされることが望ましいですが、必須ではありません)。テーブルの主キーの名前が "$id" でない場合は、テーブル エンティティ クラスを定義するときに $_primary を再構(gòu)築できます
<?php class ClassName extends Zend_Db_Table { // 默認主鍵為'id' // 但我們也可以設(shè)定其他列名為主鍵 protected $_primary = 'another_column_name'; } ?>テーブル エンティティ クラスで _setup() メソッドを使用することもできます。これらの変數(shù)を設(shè)定します。ただし、変更後は必ずparent::_setup() メソッドを再度実行してください。
<?php class ClassName extends Zend_Db_Table { protected function _setup() { $this->_name = 'another_table_name'; $this->_primary = 'another_column_name'; parent::_setup(); } } ?>4. 新しい行を挿入するにはテーブル內(nèi)のデータの場合は、列名を変更するだけです: データの連想配列をパラメータとして、insert() メソッドを呼び出すだけです(zend フレームワーク) は自動的にデータを引用し、挿入された最後の行の ID 値を返します
。 (注: これは、挿入された行の數(shù)を返す zend_db_adapter::insert メソッドとは異なります。)
<?php // // INSERT INTO round_table // (noble_title, first_name, favorite_color) // VALUES ("King", "Arthur", "blue") // class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); $data = array( 'noble_title' => 'King', 'first_name' => 'Arthur', 'favorite_color' => 'blue', ) $id = $table->insert($data); ?>
5. データを更新する
テーブル內(nèi)のデータの行を変更するには、列名を設(shè)定します。データの連想配列をパラメータとして受け取り、update() メソッドを呼び出します。このメソッドは、同じ where 條件節(jié)を通じて変更する必要がある行を決定し、テーブル內(nèi)のデータを変更し、変更された行の數(shù)を返します。 (Zend フレームワード) は変更されたデータを自動的に引用しますが、このチェックには條件句が含まれていないため、
class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); $db = $table->getAdapter(); $set = array( 'favorite_color' => 'yellow', ) $where = $db->quoteInto('first_name = ?', 'Robin'); $rows_affected = $table->update($set, $where);6 のデータを削除するにはテーブルの zend_db_adapter オブジェクトを使用する必要があります。テーブルに対して delete() メソッドを呼び出し、where 條件句文を渡すと、削除する必要がある行の數(shù)が返されます。(zend フレームワーク) は條件句を引用しません。したがって、作業(yè)を完了するにはテーブルの zend_db_adapter オブジェクトを使用する必要があります
<?php // // DELETE FROM round_table // WHERE first_name = "Patsy" // class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); $db = $table->getAdapter(); $where = $db->quoteInto('first_name = ?', 'Patsy'); $rows_affected = $table->delete($where); ?>7. 主キーに基づいてデータを検索します find() メソッドを呼び出すことで、主キーの値を使用してテーブル內(nèi)のデータを簡単に取得できます。特定のデータのみをクエリしたい場合、このメソッドは zend_db_table_row オブジェクトを返します。複數(shù)のレコードをクエリしたい場合は、zend_db_table_rowset オブジェクトが返されます。
<?php class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); // SELECT * FROM round_table WHERE id = "1" $row = $table->find(1); // SELECT * FROM round_table WHERE id IN("1", "2", 3") $rowset = $table->find(array(1, 2, 3)); ?>
8.主キーを介して対応するデータ行を見つけるのは非常に便利ですが、多くの場合、データ行を見つけるために他のいくつかの非主キー條件が使用され、この関數(shù)を呼び出すことができる fetchRow() メソッドが提供されます。 fetchRow() メソッドを where 條件ステートメント (およびオプションの order ステートメント) を通じて実行すると、zend_db_tabel はデータの最初の行の條件を満たす zend_db_table_row オブジェクトを返します。
(zend フレームワーク) は引用符を追加しないことに注意してください。 where ステートメントを使用するため、zend_db_adapter
<?php // // SELECT * FROM round_table // WHERE noble_title = "Sir" // AND first_name = "Robin" // ORDER BY favorite_color // class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); $db = $table->getAdapter(); $where = $db->quoteInto('noble_title = ?', 'Sir') . $db->quoteInto('AND first_name = ?', 'Robin'); $order = 'favorite_color'; $row = $table->fetchRow($where, $order); ?>
9 を介してデータ処理を?qū)g行する必要があります。 複數(shù)のレコードを取得する
一度に複數(shù)のレコードを取得する必要がある場合は、 fetchRow() を使用するのと同様に、 fetchAll() メソッドを使用できます。このメソッドでは、where 句と order 句を設(shè)定できるだけでなく、返される結(jié)果の數(shù)を制限するために、選択した結(jié)果を Zend_Db_Table_Rowset オブジェクトとして返すこともできます。 (zend フレームワーク) は where ステートメントを引用しないため、zend_db_adapter を通じてデータ処理を?qū)g行する必要があります。 10. ドメイン ロジックの追加
Zend Framework のテーブル モジュールとして、Zend_Db_Table はそれ自體を獨自のドメイン ロジックにうまくカプセル化します。 、insert() メソッドと update() メソッドをオーバーロードして、変更の送信前のデータ処理操作と検証を?qū)g裝できます。
<?php class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); $db = $table->getAdapter(); // SELECT * FROM round_table // WHERE noble_title = "Sir" // ORDER BY first_name // LIMIT 10 OFFSET 20 $where = $db->quoteInto('noble_title = ?', 'Sir'); $order = 'first_name'; $count = 10; $offset = 20; $rowset = $table->fetchAll($where, $order, $count, $offset); ?>
同様に、獨自の find() メソッドを設(shè)定して、主キー以外の他のフィールドを通じてデータをクエリすることもできます。 .
<?php class RoundTable extends Zend_Db_Table { public function insert($data) { // 添加一個時間戳 if (empty($data['created_on'])) { $data['created_on'] = time(); } return parent::insert($data); } public function update($data) { // 添加一個時間戳 if (empty($data['updated_on'])) { $data['updated_on'] = time(); } return parent::update($data); } } ?>
この記事で説明する內(nèi)容が、PHP プログラミング フレームワークに基づいて皆様のお役に立つことを願っています。
Zend Framework チュートリアルでの Zend_Db_Table の使用法の詳細な説明については、PHP 中國語 Web サイトに注目してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)