問題タブ [class-table-inheritance]
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.
sql-server - データベースのサブタイピング/スーパータイピング
テーブル「作物」、「トウモロコシ」、「大豆」、および「穀物」があります。Crop の 1 つのエントリは、他のテーブルの 1 つのエントリに対応します。ここでの問題は、Crop が他のテーブルの 1 つだけと 1 対 1 である必要があり、複数であってはならないことです。Crop テーブルが必要なのは、他のテーブルからの多くの共通データを結合し、コード側での情報のクエリをはるかに簡単にするためです。これに取り組むことから、欠点のあるいくつかの戦略があります...
A. 他のテーブルの ID 用に Crop に 3 つの列を配置し、トウモロコシの作物などの場合は「トウモロコシ」列にデータを入力します...
欠点: 無駄な列、作物を確認したいときはいつでも 3 つの列すべてをチェックする必要がある
B. とうもろこし、大豆、穀物の表を組み合わせて、作物の種類を示す 1 つの列を追加します。
欠点:各テーブルには異なる列があり、各行に無駄な列と不要な列があります
私はここで立ち往生していると言っても過言ではありませんか? または、このようなケースを処理するための戦略はありますか? ありがとう。
php - 複数のアカウントタイプ?
現在、Symfony2 と doctrine を使用しています。私は「アカウントの作成」ページに取り組んでいます。normal-users
このページでは、 用と用の 2 種類のアカウントを使用できますcompanies
。
Account
このテーブルと呼ばれるエンティティ (テーブル)がありusername
、列が含まれています。password
salt
会社がログインする場合は、テーブルから会社情報を取得し、ログインするcompany
場合は、テーブルから情報を取得します。normal-user
user
usertype
ユーザータイプがcompany
会社情報エンティティを取得user
する場合、ユーザー情報エンティティを取得する場合(id
アカウントの に対応) .
これは、この問題を解決する良い方法ですか? それとも2つの異なるテーブルが必要ですか? AccountUser と AccountCompany?
php - ZF2 + Doctrine2 クラス テーブルの継承エクスクリエーション
ドクトリン エンティティを ZF2 フォームに抽出する際に問題が発生しています。私はZF2とDoctrineの両方にかなり慣れていません(クラステーブルの継承も同様です)。ZF2 と Doctrine のほぼすべてのドキュメントを読みましたが、これを機能させる方法がまだわかりません。
システムを簡単に説明すると、ポリシーと呼ばれる主要なエンティティがあります。Policy エンティティには、Proposer エンティティと PolicyProduct エンティティ、およびその他のいくつかの列が含まれます。
私は PolicyProduct エンティティで Class Table Inheritance を使用しています。これは、3 つの異なる製品タイプがあり、それぞれに異なるデータが必要であるためです。3 つの製品エンティティは、TouringCaravan、StaticCaravan、および Parkhome です。
Policy エンティティは、1 つの Proposer と 1 つの PolicyProduct のみを持つことができます。
すべてのエンティティには、列ごとに getter メソッドと setter メソッドがあります。
表示されているフォームには、Policy エンティティと PolicyProduct エンティティの両方のフィールドが含まれています。
フォームを表示するには、まずポリシー エンティティとポリシー フィールドセットを取得します。次に、ポリシー フィールドセットをベースとして設定します。
次に、PolicyProduct 固有のフィールドセットを取得し、それを policyFieldset に追加します。
次に、policyFieldset をフォームに追加し、それを Policy エンティティにバインドして、完成したフォームを返します。
注目すべきは、DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator
各フィールドセットのハイドレーターとして を使用していることです。init()
次に、各フィールドセットのメソッド内で次を呼び出します 。
フォームに入力してデータベースに保存すると、データがテーブルに正しく保存されていることがわかります。その後、エンティティで同じフォームをハイドレートしようとすると、PolicyProduct エンティティの値がマップされません。ただし、ポリシー エンティティの値は正しくハイドレートされます。
ダンプする$policyEntity->getPolicyProduct()
と、すべてのデータが表示されます。つまり、エンティティが情報を正しく保存および取得していることを意味します。問題は、エンティティ データをフォーム フィールドセットに抽出しようとしたときに発生するようです。
これが理にかなっていることを願っていますが、そうでない場合はお知らせください。明確にしようと思います。
ありがとう
ここに主なエンティティがあります
ポリシー
ポリシー製品
TouringCaravan - PolicyProduct 継承テーブルの例
symfony - 単一のテーブル継承エンティティは、クラス テーブル継承エンティティを拡張できますか?
これは私の基本/親エンティティであり、その子が独自のテーブルを使用するように設定されています。
航空機エンティティ。元気いっぱいの素朴な子
サービス エンティティ。それ自体が単一テーブルの継承を使用している複雑な子。
Service エンティティの子
app/console doctrine:schema:validate
エラーは検出されませんが、単一テーブルの継承を使用する必要がある「サービス」テーブルが生成されませapp/console doctrine:schema:update --force
ん。サービス エンティティの定義が単純に無視されているようです。
もちろん、このテーブルの SQL を手動で作成することもできますが、アプリケーションは大きくなり、ある時点で移行を使用する必要があります。
誰かが私をある方向に向けることができますか? ありがとう。
重複が見つかりましたが、これまでのところ回答はありません。参照: Doctrine 2 multiple level inheritance
編集:
第2レベル(エンティティ)にもクラステーブル継承を使用すると@ORM\InheritanceType("JOINED")
、Service
かなりうまく機能します。参照: Doctrine2 複数レベルの継承
mysql - エラー: ID 列のキー生成は使用できません( TABLE_PER_CLASS )
すべてのエンティティが基本抽象エンティティから継承されるエンティティを保存するために Hibernate を使用しています。すべての具体的なエンティティには、自動インクリメントの主キー列を持つデータベース テーブルがそれぞれあります。ただし、GenerationType を「AUTO」または「IDENTITY」として使用すると、エラーが発生します。各具体的なエンティティ クラスを表すデータベース テーブル内のすべてのレコードに、順次インクリメントされた ID 値が必要です。
com.something.SuperClass:
com.something.SubClass:
私にこの例外を与えます:
GenerationType を「AUTO」から「TABLE」に変更すると解決できることはわかっていますが、このソリューションの問題は、生成されたキーが正確な順序になっていないことです。キー間に大きなギャップが残ります。
すべてのテーブルが Mysql AutoIncrement プライマリ列によって生成された Auto Incremental 値を使用できるようにするソリューションを探しています。
すべてに前もって感謝します。
PS: 私はすでに次の投稿を行っています: Cannot use identity column key generation with <union-subclass> ( TABLE_PER_CLASS )