Kohana ORM: получить результаты на основе значения чужой таблицы - PullRequest
1 голос
/ 15 октября 2010
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());
}

* Обратите внимание, что таксономический_тип не является сводной таблицей. *

Таксономия может иметь несколько связанных типов.

Затем я пытаюсь получить все таксономии, которые принадлежат данному идентификатору типа. Это был бы 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 ]

1 голос
/ 20 января 2015
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();
}
0 голосов
/ 15 октября 2010

type_id столбец - это PK таблицы таксономии, я прав? Итак, у вас есть одна (уникальная) taxonomy_type запись и только один связанный taxonomy объект (из-за отношения belongs_to) Вместо твоего:

получить все таксономии, которые принадлежат заданный идентификатор типа

это будет

получить таксономию для данного идентификатора типа

...