0

Plan と PricingTier の 2 つのエンティティがあります。プランはプラン テーブルにマップされ、pricing_tier_id という列があります。これは、id 列を介して PricingTiers テーブルにマップされます。エンティティには、Plan から PricingTier への manyToOne アソシエーションと、PricingTier から Plan への OneToMany アソシエーションがあります。それらは以下のとおりです。

計画エンティティ

etrak\OnlineOrderProcessingBundle\Entity\Plan:
  type: entity
  table: plans
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    name:
      type: string
      length: 255
      nullable: true
    description:
      type: text
      nullable: true
    termsConditions:
      column: terms_conditions
      type: text
      nullable: true
    active:
      type: boolean
      nullable: true
    amount:
      type: decimal
      nullable: true
      scale: 2
      precision: 5
    affinity:
      type: boolean
      nullable: true
    deactivationFee:
      column: deactivation_fee
      type: decimal
      scale: 2
      precision: 5
      nullable: true
    gracePeriodDays:
      column: grace_period_days
      type: integer
      nullable: true
    recurringInMonths:
      column: recurring_in_months
      type: integer
      nullable: true
    activeStartDate:
      column: active_start_date
      type: date
    activeEndDate:
      column: active_end_date
      type: date
  lifecycleCallbacks:
    prePersist: [ prePersist ]
  manyToOne:
    pricingTier:
      targetEntity: PricingTier
      inversedBy: plans
      joinColumn:
        name: pricing_tier_id
        referencedColumnName: id

PricingTier エンティティ

etrak\OnlineOrderProcessingBundle\Entity\PricingTier:
  type: entity
  table: pricing_tiers
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    name:
      type: string
      length: 50
    description:
      type: string
      length: 100
      nullable: true
    minimumDevices:
      column: minimum_devices
      type: integer
    isAffinity:
      column: is_affinity
      type: boolean
    keyname:
      type: string
      length: 55
    createdBy:
      column: created_by
      type: string
      length: 20
    createdOn:
      column: created_on
      type: datetime
    updatedOn:
      column: updated_on
      type: datetime
      nullable: true
  lifecycleCallbacks:
    prePersist: [ onPrePersist ]
    preUpdate: [ onPreUpdate ]
  oneToMany:
    plans:
      targetEntity: Plan
      mappedBy: pricingTier
  oneToOne:
    product:
      targetEntity: Product
      joinColumn:
        name: product_id
        referencedColumnName: id

私がする必要があるのは次のようなものです: SELECT * FROM プラン WHERE 価格設定_層_id = 2

可能であれば、SQL/DQL から離れたいと思います。確かにDoctrineにはこれを行う方法が組み込まれていますか? 念のために言っておきますが、私は Doctrine を Symfony 2.1 のバンドルとして使用しています。

4

1 に答える 1

0

リポジトリを使用して、必要な価格レベルを見つけるだけではありませんか..

$pricingTier = $this->getDoctrine()
                    ->getRepository('OnlineOrderProcessingBundle:PricingTier')
                    ->find($id);

そして、..を使用して、関連するすべてのプランにアクセスできます。

$pricingTier->getPlans()

または小枝で

{{ pricingTier.plans }}
于 2013-03-28T15:20:38.173 に答える