Я занимаюсь разработкой личного проекта.
У меня есть две модели «Шоу» и «Эпизод». У меня есть один контроллер 'Ops'.
Показать модель:
class Show extends AppModel
{
var $name = 'Show';
var $hasMany = array(
'Episode' => array(
'className' => 'Episode',
'foreignKey' => 'show_id'
)
);
}
Модель серии:
class Episode extends AppModel
{
var $name = 'Episode';
var $belongsTo = array(
'Show' => array(
'className' => 'Show',
'foreignKey' => 'show_id'
)
);
}
Контроллер Ops:
class OpsController extends AppController
{
var $name = 'Ops';
var $uses = array('Show','Episode');
function index()
{
$episodes = $this->Episode->find('all',array(
'limit' => 10,
'order' => array('Episode.first_aired' => 'DESC'),
)
);
debug($this->Episode);
debug($episodes);
}
}
При запуске контроллера Ops я получаю записи «Episode» так, как хочу, но не получаю связанную запись «Show», основанную на «show_id» в конфигурации «ownTo». Похоже, что он вообще не ссылается на модель, поскольку я могу целенаправленно нарушать класс модели, и запрос все еще продолжается.
После долгих проверок, исследований и тестирования я смог заставить его работать, добавив в контроллер Ops перед запросом find () следующее:
$this->Episode = ClassRegistry::init('Episode');
$this->Episode->bindModel(
array('belongsTo' => array(
'Show' => array(
'className' => 'Show'
)
)
)
);
Теперь, пока это работает, я все еще хотел бы знать, почему мои модели не вызывают должным образом. Любая помощь будет наиболее ценной. Спасибо!