1

現在、Symfony2 と doctrine を使用しています。私は「アカウントの作成」ページに取り組んでいます。normal-usersこのページでは、 用と用の 2 種類のアカウントを使用できますcompanies

Accountこのテーブルと呼ばれるエンティティ (テーブル)がありusername、列が含まれています。passwordsalt

会社がログインする場合は、テーブルから会社情報を取得し、ログインするcompany場合は、テーブルから情報を取得します。normal-useruser

usertypeユーザータイプがcompany会社情報エンティティを取得userする場合、ユーザー情報エンティティを取得する場合(idアカウントの に対応) .

これは、この問題を解決する良い方法ですか? それとも2つの異なるテーブルが必要ですか? AccountUser と AccountCompany?

4

1 に答える 1

2

User テーブルに存在しない Company テーブルに多くの列がある場合、またはその逆の場合、問題を解決する最善の方法は、Account、User、Company の 3 つのテーブルを作成するクラステーブル継承を使用することです。ユーザーと会社は、アカウント エンティティのサブクラスである必要があります。

上記のリンクによると、次のようなコードが必要です。

namespace MyProject\Model;

/**
 * @Entity
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="usertype", type="string")
 * @DiscriminatorMap({"user" = "User", "company" = "Company"})
 */
class Account
{
    // ...
}

/** @Entity */
class User extends Account
{
    // ...
}

/** @Entity */
class Company extends Account
{
    // ...
}
于 2013-10-02T07:01:21.277 に答える