两个表之间的学说关系

时间:2010-02-09 17:13:12

标签: doctrine entity-relationship

我有两个表A和B.A在B中有一个或多个寄存器。 我想加入两个表并提取有关A的所有信息。

我这样做:

的schema.yml

A:
  fields.....

B:
  fields...
  relations:
    A: { onDelete: CASCADE, local: a.id, foreign: b.id, foreignalias: AB }

我试着这样做......

  $q = Doctrine_Query::create()
  ->from('A a')
  ->leftJoin('a.AB b')
  ->where('a.field = "D"')
  ->andWhere('b.codzon = ?', $this->cp);

它打印错误:未知关系别名AB 我做错了什么?

2 个答案:

答案 0 :(得分:4)

您的查询似乎没问题,错误在您的定义中。你需要在两边定义关系:A和B.我对YML不太满意,但看起来应该是这样的:

A:
  relations:
    B:
      local: id
      foreign: id
      foreignAlias: AB
      foreignType: many
      type: one

另请参阅http://www.doctrine-project.org/documentation/manual/1_0/ru/yaml-schema-files#relationships:one-to-many了解detect_relations选项。

答案 1 :(得分:0)

从架构中删除表名:

...
A: { onDelete: CASCADE, local: id, foreign: id, foreignalias: AB }
...