Kohana ORM:根据外表的值获取结果

时间:2010-10-15 11:17:55

标签: orm kohana-3 kohana-orm

taxonomies
 -id
 -name

taxonomy_type
 -taxonomy_id
 -type_id

我配置了两个模型:

class Model_Taxonomy{
protected $_has_many = array('types'=>array());
}

class Model_Taxonomy_Type{
protected $_belongs_to = array('taxonomy' => array());
}

*请注意,taxonomy_type不是数据透视表。*

分类法可以关联多种类型。

然后,我要做的是获取属于给定类型id的所有分类法。 这将是我将执行的SQL查询:

SELECT * FROM taxonomies, taxonomy_type WHERE taxonomy_type.type_id='X' AND taxonomies.id=taxonomy_type.taxonomy_id

我试过这个:

$taxonomies = ORM::factory('taxonomy')
    ->where('type_id','=',$type_id)
    ->find_all();

显然这不起作用,但我找不到有关如何执行此类查询的信息,所以我不知道。

2 个答案:

答案 0 :(得分:1)

class Model_Taxonomy{
  protected $_belongs_to = array(
    'types' => array(
      'model' => 'Taxonomy_Type',
      'foreign_key' => 'taxonomy_id'
    )
  );
}

class Model_Taxonomy_Type{
  protected $_has_many = array(
    'taxonomies' => array(
      'model' => 'Taxonomy',
      'foreign_key' => 'taxonomy_id'
    )
  );
}

使用类似的东西:

$type = ORM::factory('taxonomy_type')
  ->where('type_id', '=', $type_id)
  ->find();

if( ! $type->taxonomies->loaded())
{
  types->taxonomies->find_all();
}

答案 1 :(得分:0)

type_id列是taxonomy_type表的PK,对不对? 因此,您有一个(唯一的)taxonomy_type记录,并且只有一个相关的taxonomy对象(因为belongs_to关系)。而不是你的:

  

获取属于a的所有分类法   给定类型id

它将是

  

获取给定类型ID的分类