开发者

Kohana ORM: Get results based on value of a foreign table

开发者 https://www.devze.com 2023-01-20 06:36 出处:网络
taxonomies -id -name taxonomy_type -taxonomy_id -type_id I\'ve configured two models: class Model_Taxonomy{
taxonomies
 -id
 -name

taxonomy_type
 -taxonomy_id
 -type_id

I've configured two models:

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

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

*Please note that taxonomy_type is not a pivot table.*

A taxonomy can have multiple types associated.

Then, what I'm trying to do is get all taxonomies that belong to a given type id. This is would be the SQL query I would execute:

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

I've tried this:

$taxonomies = ORM::factory('taxonomy')
    ->where('type_开发者_开发知识库id','=',$type_id)
    ->find_all();

Obviously this doesn't work, but I can't find info about how execute this kind of queries so I have no clue.


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'
    )
  );
}

And use some like that:

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

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


type_id column is a PK of taxonomy_type table, am I right? So, you have one (unique) taxonomy_type record, and only one related taxonomy object (because of belongs_to relationship). Instead of your:

get all taxonomies that belong to a given type id

it will be a

get taxonomy for a given type id

0

精彩评论

暂无评论...
验证码 换一张
取 消