0

私は2つのエンティティを持っています。

Labs\CatalogBundle\Entity\ProductExtraspecs:
type: entity
table: orders__regmat__extraspecs

fields:
    regmatid:
        id: true
        type: integer
        scale: 11
    specid:
        id: true
        type: integer
        scale: 11
    attrib:
        type: string
        length: 20
    value:
        type: string
        length: 200

lifecycleCallbacks: {  }


manyToOne:
  specs:
    targetEntity: Specs
    inversedBy: specs
    joinColumn:
        name: specid
        referencedColumnName: specid

Labs\CatalogBundle\Entity\Specs:
    type: entity
    table: orders__regmat__extraspecs__specs
    fields:
        specid:
            id: true
            type: integer
            unsigned: false
            nullable: false
            generator:
                strategy: IDENTITY
        desc:
            type: string
            length: 200
            fixed: false
            nullable: false
        cat:
            type: integer
            unsigned: false
            nullable: false
        type:
            type: integer
            unsigned: false
            nullable: false

    lifecycleCallbacks: {  }


    oneToMany:
        specs:
            targetEntity: ProductExtraspecs
            mappedBy: specs

したがって、コントローラーで、とを使用してすべての行を取得しregmatid = 8cat = 0これを試しました。

$selRepository = $this -> getDoctrine() ->getEntityManager()->getRepository('LabsCatalogBundle:ProductExtraspecs'); 
    $query = $selRepository->createQueryBuilder('sel')
                        //->select('count(c.protid) as cnt')
                        ->where("sel.cat = '0' AND sel.regmatid = $id")
                        //->setParameter('price', '19.99')  
                        ->getQuery();
    $selected = $query->getResult();

しかし、次のようなエラーが発生します。

[Semantical Error] line 0、col 74 near'cat ='0'AND':エラー:Class Labs \ CatalogBu​​ndle \ Entity \ ProductExtraspecsには、catという名前のフィールドまたは関連付けがありません

関連するエンティティのフィールドにアクセスするにはどうすればよいですか?手伝ってくれませんか。

前もって感謝します :)

4

1 に答える 1

0

スペックテーブルに参加する必要があります。

$selRepository = $this->getDoctrine()->getRepository('LabsCatalogBundle:ProductExtraspecs'); 
$query = $selRepository->createQueryBuilder('sel')
    ->leftJoin('sel.spec', 'spec')
    ->where("spec.cat = '0' AND sel.regmatid = $id")
    ->setParameter('price', '19.99')  
    ->getQuery();
$selected = $query->getResult();
于 2012-11-12T12:17:23.897 に答える