学说:如何结合3个表,以及多对多的态度

时间:2010-08-18 15:02:31

标签: php doctrine

共有3个表格:

catalog
product
product2catalog

product2catalog包含以下字段:

catalog_id
product_id

如何在目录中获取商品?如何重建连接才能这样做:

$CatalogTable = CatalogTable::getInstance();
$Catalog = $CatalogTable->find( $id );
var_dump( $Catalog->product );

你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

如[{3}}所述,Doctrine中很多关系都很容易。

像这样建立你的关系:(在目录表的setUp()函数中)

$this->hasMany('Product as Products',
array('local' => 'catalog_id',
      'foreign' => 'product_id',
      'refClass' => 'product2catalog'
    ));

同样,在YAML:

Catalog:
# ...
  relations:
   # ...
    Products:
      class: Product
      local: catalog_id
      foreign: product_id
      refClass: product2catalog

您还必须对产品类执行相同的操作 - 完全相同的语法,只需反转本地/外部引用。

答案 1 :(得分:1)

要查询多对多关系,您可以执行以下操作:

$q = Doctrine_Query::create()
    ->from('Catalogue c')
    ->leftJoin('c.Product p')
    ->where('c.id = ?', $id);

$c = $q->fetchArray();