Zend Framework 2を初めて使用しました.ZF2用のアルバムチュートリアルを正常終了しました。今私は、データベース内の複数のテーブルから特定のデータのみを表示したいと思います。私はテーブルを持つ簡単なデータベース設定を持っています(例えば、人、本、ステータスなど)。データベースが何をすべきかは本当に重要ではありません。私が知りたいのは、テーブル結合のデータを表示するためのステップバイステップのガイダンスを示すチュートリアルがあるかどうかです。私は結合を行う方法を示すコードのスニペットを見てきましたが、クラスの設定に関するチュートリアルやModule.phpの設定方法が見つかりませんでした。言い換えると、Album in Moduleは、getServiceConfig()にハードコードされた1つのテーブル名を持っています。しかし、私はそれをセットアップして、複数のテーブルからデータを要求していることを知っています。また、関係を設定したい場合は、アルバムチュートリアルのようにデータベーステーブル用のクラスを作成するのか、それとも別のものになるのでしょうか。助けてくれ、正しい道を教えてくれませんか?複数のテーブルを扱うことを説明するチュートリアルが分かっているなら、それは素晴らしいことです。Zend Framework 2用の複数のテーブル
7
A
答えて
5
ablumsチュートリアルでは、複数のテーブルへの結合をサポートしていないZend\Db\TableGateway
を使用しています。
Zend\Db
を直接使用するか、ZfcBaseモジュール内のAbstractDbMapper
などのマッパークラスを使用する必要があります。
基本的な使い方は次のようになります。
<?php
// Given that $dbAdapter is an instance of Zend\Db\Adapter\Adapter
use Zend\Db\Sql\Select();
use Zend\Db\ResultSet\ResultSet();
$select = new Select();
$select->from('album')
->columns(array('album.*', 'a_name' => 'artist.name'))
->join('artist', 'album.artist_id' = 'artist.id');
$statement = $dbAdapter->createStatement();
$select->prepareStatement($dbAdapter, $statement);
$driverResult = $statment->execute();
$resultset = new ResultSet();
$resultset->initialize($driverResult); // can use setDataSource() for older ZF2 versions.
foreach ($resultset as $row) {
// $row is an ArrayObject
}
join()
方法がalbum
とartist
テーブル間の結合を実行するために使用されます。 columns()
を使用して、返される列を選択します。この場合、アーティストテーブル内のname
列の別名a_name
を作成します。
Select
オブジェクトが設定されると、残りのデータはDb
標準のコードとなり、データを含むオブジェクトがResultSet
に返されます。
4
Robsの優れた答えを拡張するだけで、そのステップをさらに進め、必要な関係を形成するために複数のオブジェクトを取り込むことが簡単です。
<?php
// Given that $dbAdapter is an instance of Zend\Db\Adapter\Adapter
use Zend\Db\Sql\Select();
use Zend\Db\ResultSet\ResultSet();
$select = new Select();
$select->from('album')
->columns(array('album.*', 'artist.*'))
->join('artist', 'album.artist_id' = 'artist.artist_id');
$statement = $dbAdapter->createStatement();
$select->prepareStatement($dbAdapter, $statement);
$driverResult = $statement->execute(); // execute statement to get result
$resultset = new ResultSet();
$resultset->setDataSource($driverResult);
$albumHydrator = new AlbumHydrator;
$artistHydrator = new ArtistHydrator;
foreach($resultset as $row) { // $row is an ArrayObject
$album = $albumHydrator->hydrate($row);
$artist = $artistHydrator->hydrate($row);
$album->setArtist($artist);
}
また、水和結果を見なければならないのResultSetから直接あなたのためにオブジェクトを構築するために設定します。
http://framework.zend.com/manual/2.0/en/modules/zend.db.result-set.html
0
use Zend\Db\Sql\Select;
$select = new Select();
// or, to produce a $select bound to a specific table
// $select = new Select('foo');
$select->join(
'foo' // table name,
'id = bar.id', // expression to join on (will be quoted by platform object before insertion),
array('bar', 'baz'), // (optional) list of columns, same requiremetns as columns() above
$select::JOIN_OUTER // (optional), one of inner, outer, left, right also represtned by constants in the API
);
$select->from(array('f' => 'foo')) // base table
->join(array('b' => 'bar'), // join table with alias
'f.foo_id = b.foo_id'); // join expression
関連する問題
- 1. Zend Framework - 複数のナビゲーションブロック
- 2. Zend Frameworkの2、
- 3. Zend Frameworkの2ナビゲーションサブサブメニュー
- 4. Zend Framework 2のMultiSelect
- 5. Zend Frameworkの2 - URL
- 6. Zend Frameworkテーブルの関係 - アプリケーション内の複数のテーブルから選択
- 7. Zend FrameworkのPDF複数行の問題
- 8. Zend Framework 2オートローディング
- 9. Zend Framework 2 LDAP
- 10. Zend Framework 2リダイレクト
- 11. zend framework 2 AuthenticationService
- 12. Zend Framework 2パートルートアセンブリ
- 13. Zend Framework 2で式を使用した複数の結合の実行
- 14. Zend Framework 2セッションのライフタイム
- 15. 404エラーZend Frameworkの2
- 16. Zend Framework 2 - クッキーの概念
- 17. Zend Framework 2の認証
- 18. Zend Frameworkで複数のレイアウトを使用できますか?
- 19. Zend Framework 2 - 異なるデータベースとスキーマのテーブルを結合する
- 20. zend dbテーブルモデルと複数テーブルのクエリ
- 21. Zend Framework用のDataGrid
- 22. Zend Frameworkを使用したZend Frameworkフォーム
- 23. Zend Framework 2 - データベース接続
- 24. Zend Framework 2ナビゲーションメニューTwitter Bootstrapインテグレーション
- 25. Zend Frameworkのカスタムクラスと関数
- 26. 2つのサブドメイン間の通信。 Zend Framework
- 27. Zend Frameworkのカスタマイズ2電子メールフィールドバリデータのエラーメッセージ
- 28. Zend Framework symfony 2のアクションスタックの機能
- 29. MVCを使用しないZend Framework Dbテーブルの使用
- 30. MySQLの複数テーブル2つのテーブル
おかげでロブ。私はそれを撃つだろう。一方、Zend \ Dbを使用する作業チュートリアルについて知っていますか?私はZendには初めての人なので、完全に理解するにはしばらく時間がかかります。 Zend \ Dbを使ってデータを取り出して表示するチュートリアルを見ることができれば、非常に役に立ちます。それにもかかわらず、あなたの助けに感謝します。 – user1828605
ロブ、カップルのことはまだ私には明らかではありません。私が持っているテーブルごとにクラスを作成しますか? Module.phpで何をしますか?私は現在、モジュールチュートリアルに示されているように、モジュール内にpublic function getServiceConfig()を持っています。私はあなたが上に示したことを理解していますが、私の現在の問題は、データベースとの会話を始める方法がわからないことです。チュートリアルは非常に役に立ちます。ありがとう – user1828605
私は論理エンティティごとにクラスを作成します。通常、テーブル内の行にマッピングされますが、必ずしもそうではありません(マッパーは常に結合することがあります)。私はGithubでいくつかのコードを整理しようとします。 –