問題タブ [doctrine-extensions]
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.
symfony - Doctrine Translatable / Symfony2 でプロパティをオーバーライドして Translatable にします
バンドル (実際には SyliusAssortmentBundle) に属する文字列プロパティ 'name' を持つマップされたスーパークラスがあります。そのマップされたスーパークラスから継承するクラスがバンドルに含まれています。DoctrineExtensions (Translatable) を使用して、エンティティに Translatable 機能を追加したいと考えています。マッピングでプロパティ 'name' を再宣言できないため、このドクトリン ドキュメントに従って、そのプロパティのマッピングをオーバーライドしようとしています。
http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html#attribute-override
これに触発されて、これを私のproduct.orm.xmlファイルに追加しました
これは機能していないようです。ダミー プロパティ (trans_name) をエンティティに追加したので、Translatable Extension が機能していることを確認できました。
次のようなものに固執した後:
「trans_name」だけが「ext_translations」テーブルに保存されています。
そう。マッピングをオーバーライドして Translatable を追加することは可能ですか? もしそうなら。私は何を間違っていますか?...
ありがとう
symfony - Gedmo\Loggable は、変更されていないデータをログに記録します
私は Symfony2.2 を StofDoctrineExtensionsBundle (および Gedmo DoctrineExtensions) と共に使用しています。私は単純なエンティティを持っています
既存のオブジェクトの属性を変更すると、テーブルにログ エントリが作成されますext_log_entries
。このログ テーブルのエントリには、変更された列のみが含まれます。ログは次の方法で読み取ることができます。
しかし、私が理解していないbirthdate
のは、変更されていないにもかかわらず、フィールドが常にログエントリに含まれている理由です。3 つのログ エントリの例を次に示します。
本当に変更されたデータのみをログに記録したい。まだ見ていないオプションはありますか? それがbirthdate
物DateTime
であることに関係しているようですね。
EDITDateTime
オブジェクト
とは関係ありません。これは、他のエンティティでも発生します。単純な値を含む別のエンティティがあります。
ブラウザーで編集フォームを開いて変更せずに保存すると、ログ テーブルには次のものが含まれます。
なんで?
doctrine-orm - Gedmo\Tree ルートをソートする方法は?
Doctrine で Gedmo\Tree を使いたいです。すべてのツリーを表示したいのですが、ルート ノードを並べ替えることができますか?
例: いくつかのカテゴリがあります。いくつかのメイン カテゴリ (ルート ノード) とサブカテゴリ (子) があります。ツリーを選択して構築すると (例: childrenHierarchy メソッド)、子のみがソートされます...
私はInterentでいくつかの解決策を探していましたが、2つの可能な解決策を得ました.1.偽のルートノード2.ソート列をテーブルに追加します
私の意見では、最初の解決策は良くありません。しかし、2番目の解決策に従ってそれを行う方法は? たとえば、ルートを名前でソートしたい場合、どうすればよいでしょうか?
symfony - gedmo doctrine の翻訳可能な拡張。すべての翻訳または特定の翻訳を取得します (現在のロケールとは異なります)
gedmo doctrine の翻訳可能な拡張機能を使用するエンティティがあります。このエンティティを現在のロケールでロードできます。
ここで、ユーザーがさまざまな翻訳を表示および編集できるようにする管理パネルの場合、すべての翻訳またはユーザーが選択した特定の翻訳を表示したいと考えています。
そのエンティティに ->getTranslations メソッドがあるだけです。選択した翻訳だけを読み込む別のトリックはありますか? 特定のシナリオのベスト プラクティスはありますか?
どうもありがとう!
symfony - DoctrineExtensions (l3pp4rd) または EntityAudit (simplethings)
Symfony 2 アプリケーションで Versionable Doctrine の動作を実装する必要があります。これは実際には、バージョン管理可能な動作 (Doctrine 1) が既に実装されている Symfony 1 の移行です。
私はそこにこの2つの解決策を見つけました
私は EntityAudit ソリューションが本当に気に入りました。これは、出力が db に記録されたエンティティを考慮すると、Doctrine 1 Versionable の動作に似ているからです。
ポイントは、そのプロジェクトはアクティブではないと思うということです。最後のコミットは 7 か月前に行われました。いくつかの廃止された機能を使用しています。
私は正しいと思いますか。不足しているものはありますか?
symfony - 注意: vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php 行 481 で非オブジェクトのプロパティを取得しようとしています
doctrine、loggable (DoctrineExtension)、リスナーに関連する本当に奇妙なケースがあります。
ここで私が抱えている状況を説明します。以下は、問題に関連していると思われるすべてのコードです。
契約書が特定のテンプレート バージョンに基づいている 2 つのエンティティ (契約書とテンプレート) があります。テンプレート エンティティには DoctrineExtension Loggable アノテーションがあります。したがって、LogEntryRepository->revert() メソッドを使用して、契約テンプレートを特定のバージョンに戻すことができます。(これを行うために postLoad リスナーを使用しているため、契約書が取得されるたびに、その契約書の適切なテンプレート バージョンが読み込まれます)。
ParamConverter アノテーションを使用して契約書を取得するコントローラー アクションを取得すると、すべてが正常に機能し、適切なテンプレートで契約書が取得されます。クエリ ビルダーを使用して、コントローラー アクションの最初の行でまったく同じ合意を取得しようとすると、次の例外が発生します。
どんな助けでも大歓迎です。ありがとう。
問題に関連する部分をコピーするだけです:
エンティティ
ドクトリン加入者
行動
このアクションにより、問題なく目的の合意が得られます。
このコードを使用すると、例外が発生します (ハードコードされた ID とこのコードはテスト用です)。
symfony - Symfony 2 での Doctrine ツリー パスの繰り返し
兄弟カテゴリの名前の配列を含む変数 $path があります。この変数を使用して、新しい配列 $categories_children を作成します。これには、タイトルに従って $path 配列から各カテゴリの子の配列が含まれます。私はGediminas Morkevicius によるDoctrine Tree-Nestedset拡張機能を使用しており、これを試しました:
問題は、引数 $parent を持つメソッド getChildren() が、渡された引数が NULL の場合と同じ配列を返すことです。つまり、選択したカテゴリからではなく、ルートから始まるすべてのノードが返されます。$parent 変数で使用されているメソッド findOneByTitle() は、なぜか getPath() からの引数を受け入れず、NULL として動作します。