質問 > その他 > Entityのリレーションで値を直指定したい |
その他
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
akako152 |
投稿日時: 2023/5/26 18:52
対応状況: 解決済
|
半人前 登録日: 2021/4/7 居住地: 東京都 投稿: 16 |
Re: Entityのリレーションで値を直指定したい Entityのリレーションを設定する方法についてですが、ECCubeではDoctrine ORMを使用しており、リレーションを定義することができます。親テーブル(tableA)と子テーブル(tableB)のリレーションを張るためには、以下の手順を試してみてください。
エンティティクラス(Entity Class)にリレーションを定義します。親エンティティクラス(tableA)内に子エンティティクラス(tableB)とのリレーションを追加します。例えば、OneToManyやManyToOneのリレーションを使用することができます。 リレーションのカラムを指定します。親エンティティクラス内でtypeとtype_idのカラムに関連付けを行います。これにより、親エンティティと子エンティティの関連付けが可能になります。 例えば、以下のようにリレーションを設定することができます: // tableAエンティティクラス class TableA { // ... /** * @ORM\ManyToOne(targetEntity="TableB") * @ORM\JoinColumn(name="type_id", referencedColumnName="id") */ private $tableB; // ... } // tableBエンティティクラス class TableB { // ... /** * @ORM\OneToMany(targetEntity="TableA", mappedBy="tableB") */ private $tableAs; // ... } このようにリレーションを定義することで、親エンティティ(tableA)と子エンティティ(tableB)の関連付けが行われます。 もし、a.type = 2のように値を直接指定してリレーションを定義したい場合は、以下のようにカスタムクエリを使用することもできます: // tableAエンティティクラス class TableA { // ... /** * @ORM\ManyToOne(targetEntity="TableB") * @ORM\JoinColumn(name="type_id", referencedColumnName="id") * @ORM\JoinTable(name="tableB", joinColumns={@ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=false)}) * @ORM\Where("type = 2") */ private $tableB; // ... } こちらの方法では、type = 2の条件でリレーションが設定されます。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
Entityのリレーションで値を直指定したい | hono | 2023/5/26 11:38 |
Re: Entityのリレーションで値を直指定したい | mcontact | 2023/5/26 15:09 |
Re: Entityのリレーションで値を直指定したい | hono | 2023/5/29 12:45 |
» Re: Entityのリレーションで値を直指定したい | akako152 | 2023/5/26 18:52 |
Re: Entityのリレーションで値を直指定したい | hono | 2023/5/29 12:52 |
Re: Entityのリレーションで値を直指定したい | hono | 2023/5/31 19:10 |