問題タブ [doctrine-orm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Doctrine2:参照テーブルに余分な列がある多対多を処理するための最良の方法
Doctrine2で多対多の関係を処理するための最良の、最もクリーンで最も簡単な方法は何でしょうか。
メタリカのMasterofPuppetsのようないくつかのトラックのあるアルバムがあるとしましょう。ただし、 Battery by Metallicaのように、1つのトラックが複数のアルバムに表示される可能性があることに注意してください。3つのアルバムがこのトラックをフィーチャーしています。
したがって、必要なのは、いくつかの追加の列(指定されたアルバム内のトラックの位置など)を含む3番目のテーブルを使用した、アルバムとトラック間の多対多の関係です。実際、Doctrineのドキュメントが示唆しているように、その機能を実現するには、二重の1対多の関係を使用する必要があります。
サンプルデータ:
これで、それらに関連付けられているアルバムとトラックのリストを表示できます。
結果は私が期待しているものです。つまり、トラックが適切な順序であり、プロモートされたアルバムがプロモートとしてマークされているアルバムのリストです。
では、何が問題なのですか?
このコードは、何が問題なのかを示しています。
Album::getTracklist()
AlbumTrackReference
オブジェクトの代わりにオブジェクトの配列を返しTrack
ます。プロキシメソッドを作成できません。両方の場合はどうなりAlbum
ますか?メソッドTrack
がありgetTitle()
ますか?メソッド内で追加の処理を行うこともできますAlbum::getTracklist()
が、それを行う最も簡単な方法は何ですか?私はそのようなことを書くことを余儀なくされていますか?
編集
@beberleiはプロキシメソッドを使用することを提案しました:
それは良い考えですが、私はその「参照オブジェクト」を両側から使用しています:$album->getTracklist()[12]->getTitle()
と$track->getAlbums()[1]->getTitle()
、したがって、getTitle()
メソッドは呼び出しのコンテキストに基づいて異なるデータを返す必要があります。
私は次のようなことをしなければならないでしょう:
そして、それはあまりきれいな方法ではありません。
php - Doctrine 2 - 「Getting Started XML-Edition」の問題 - データベーススキーマの生成
Doctrine に触れたことがないので (1 または 2)、Doctrine 2 のこのチュートリアルに従っています。
コマンド ラインを使用してデータベース スキーマを生成するところまで来ました。チュートリアルに従って、これは cli-config.php ファイルです。
ただし、実行すると、エラーが発生します。
cli-config.php ファイルによって参照されるクラスが存在しないためです。また、cli-config.php ファイルを消去しようとしましたが、もちろんどちらも機能しません。「ヘルパー "em" が定義されていません」と表示されます。
バージョン 2.0.0BETA3 を使用しています。これがベータ版であることはわかっているので、いくつかのファイルが変更されている可能性がありますが、そのクラスはどこにも見つかりません。
それを機能させる方法についてのアイデアはありますか?
php - require_once欠落している教義zendフレームワーク
私は教義をZendFrameworkと統合しています。CLIからスローされたエラーが発生しました。Zend_Application_Bootstrap_BootstrapにはZend_Application_Bootstrap_BootstrapAbstractのrequire_onceがないようです。誰かがこれを打ったことがありますか?
私のcli-config.php
php - Zendおよび静的クラスのプロパティ
静的クラスのプロパティを定義するときに、値を割り当てようとしています。
このコードを実行しようとすると、次のエラーが発生します。
単純な文字列値を割り当てるだけの場合:
すべてが大丈夫です。PHPが処理できないことをしていますか?もしそうなら、これを解決する方法は?
zend-framework - doctrine2zendフレームワーク名前付けコントローラー
doctrine2サンドボックスをデフォルトのZendFrameworkアプリと統合しようとしています。コントローラで名前空間を使用しようとすると、「無効なコントローラクラス( "IndexController")」エラーが発生します
これは動作します:
これはしません(しかしすべきですか?):
php - Doctrine 2の移行では、sqliteデータベースを使用してテーブルを変更する方法を教えてください。
doctrine 2の移行でテーブルを変更する際に問題が発生します。次のコードは常にエラーをスローします:操作'Doctrine \ DBAL \ Platforms \ AbstractPlatform::getAlterTableSQL'はプラットフォームでサポートされていません。
alter tableはsqliteでサポートされているため、これは奇妙なことです。
php - doctrine 2 migrations で外部キーをドロップする方法
doctrine 2 の移行で外部キーを削除したいと考えています。しかし、dropForeignKeyConstraint() はありません
落とし方わかる人いますか?
php - Doctrine2検証の例外を処理する方法
私はDoctrine2(そして実際にはPHPの例外)を初めて使用しますが、このページに続いて、Doctrine 2(CodeIgniterの上)で堅牢な検証エンジンを考え出そうとしています。
今、私はValidateExceptionクラスをどこで定義するのか、そして(コントローラー、ライブラリーなどから)エンティティーで保存(永続化?)を行う方法を考えています。
これを行った後(たとえば、「認証」ライブラリで)、次のようなものが必要です。
その永続性が成功した(つまり、検証に合格して保存された)か、成功しなかった(つまり、検証に失敗した)かを簡単に返すことができます。
php - Doctrine 2 Classloader の奇妙な動作 - クラスへの間違ったパス
Doctrine 2 プロジェクトに追加された Classloader に少し問題があります。次のような単純なディレクトリ構造があります。
- config (ブートストラップ ファイル)
- html (テンプレート/画像/js などを含むドキュメントルート)
- php
- エンティティ (ドクトリン 2 エンティティ)
- 応答 (一部のトランスポート オブジェクト)
- サービス (API とビジネス ロジックの処理 - Java のセッション Bean など)
各 php サブディレクトリは、独自の名前空間 (ディレクトリの名前と同じ) に属します。
前述のクラスローダーを使用してこれら 3 つの異なるパッケージをロードしたいので、ブートストラップは次のようになります。
太字の DIR は実際には__ DIR __
php 定数です。
現在、サービス パッケージでエンティティを参照していますが、これが問題の始まりです。何らかの理由で、ファイルが見つからないという問題が原因でエラーが発生します。たとえば、次のようになります。
必要な '/var/www/projects/PlatformManagement/config/../php/Services/Entities/User.php' (include_path='.:/usr/share/pear:/usr/share/php') を開くことができませんでした /usr/share/pear/Doctrine/Common/ClassLoader.php 行148
どういうわけか、パスに余分な「サービス」があり、明らかに有効なパスではありません。なぜそこに余分なディレクトリがあるのか 少し困惑していますか?すべての名前空間と呼び出しを 3 回チェックしましたが、問題ありません。
見てもらうにはもう 1 組の目が必要です。ここで明らかな何かが欠けていると思いますが、それを見つけることはできません :|
ああ、これは最新の Doctrine 2 Beta (4) と fedora の php 5.3.3 です。
ありがとう、グレッグ
php - doctrine2はManyToMany関係を削除します
次のクラスメンバーとマッピングを持つグループエンティティがあります。
子を追加するのは簡単です。
子の削除:
どうすれば子供を連れ去ることができますか?