Я пытаюсь отказаться от некоторых служебных программ Wordpress и запросить базы данных напрямую, используя отношения модели лития.Проблема, реплицирующая запрос таблицы таксономии wordpress
Вот запрос я тиражирование:
SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (<list of id's>) ORDER BY t.name ASC
Это отношения, если я правильно понимаю:
wp_term_relationships принадлежит wp_term_taxonomy, который принадлежит wp_terms.
Вот как я установка мои модели:
class Terms extends \lithium\data\Model{
public $_meta = array(
'source' => 'wp_terms',
'key' => 'term_id'
);
protected $_schema = array(
'term_id' => array('type' => 'id'),
'name' => array('type' => 'string'),
'slug' => array('type' => 'string'),
'term_group' => array('type' => 'int')
);
public $hasOne = array(
"TermsTaxonomies" => array(
"to" => 'app\models\TermsTaxonomies',
"key" => "term_id",
)
);
}
class TermsTaxonomies extends \lithium\data\Model{
public $_meta = array(
'source' => 'wp_term_taxonomy'
);
protected $_schema = array(
'term_taxonomy_id' => array('type' => 'id'),
'term_id' => array('type' => 'int'),
'taxonomy' => array('type' => 'string'),
'description' => array('type' => 'string'),
'parent' => array('type' => 'int'),
'count' => array('type' => 'int')
);
public $belongsTo = array(
"Terms" => array(
"to" => 'app\models\Terms',
"key" => "term_id",
)
);
}
class TermsRelationships extends \lithium\data\Model{
public $_meta = array(
'source' => 'wp_term_relationships'
);
protected $_schema = array(
'object_id' => array('type' => 'id'),
'term_taxonomy_id' => array('type' => 'int'),
'term_order' => array('type' => 'int')
);
public $belongsTo = array(
"TermsTaxonomies" => array(
"to" => 'app\models\TermsTaxonomies',
"key" => "term_taxonomy_id",
)
);
}
я «модель TermTaxonomies отношений не найдено.» Ошибка при запуске этого запроса:
$terms = Terms::find('all', array(
"conditions" => array(
"TermTaxonomies.taxonomy" => "category",
"TermRelationships.object_id" => array(8489)
),
"with" => array(
"TermTaxonomies", "TermRelationships"
)
));
Излишне говорить, что я абсолютно уверен, что у меня нет правильного схватывания на литиевой модели отношениях.
Связанный вопрос: http://stackoverflow.com/questions/9836392/accessing-more-than-one-model-deep-relationships-in-lithium – christopheradams