У меня есть таблицы с именем:
client (id, alias) post (id, subject) post_client (id, post_id, client_id)
Многие клиенты могут быть присоединены к сообщению.
Использование Zend DB Аннотация таблицы Я начал строить модель, вот классы:
ORM_Post
class ORM_Post extends Zend_Db_Table_Abstract {
protected $_name = 'Post';
protected $_dependentTables = array('ORM_Post_Client');
}
ORM_Client
class ORM_Client extends Zend_Db_Table_Abstract {
protected $_name = 'Client';
protected $_dependentTables = array(
'ORM_Post_Client'
);
}
ORM_Post_Client
class ORM_Post_Client extends Zend_Db_Table_Abstract {
protected $_name = 'Post_Client';
protected $_referenceMap = array(
'post' => array(
'columns' => 'post_id',
'refTableClass' => 'ORM_Post',
'refColumns' => 'id'
),
'client' => array(
'columns' => 'client_id',
'refTableClass' => 'ORM_Post_Client',
'refColumns' => 'id'
)
);
}
То, что я надеялся сделать, - это вызвать экземпляр Post, а затем загрузить связанных клиентов, а также загрузить экземпляр клиента и загрузить все связанные сообщения.
Так что ясделал это:
$post = new ORM_Post();
$results = $post->fetchAll();
foreach ($results as $key => $result){
$row = $results->current();
$client = $row->findDependentRowset('ORM_Post_Client','client');
}
и я получил Справочное правило "клиент" не ссылается на таблицу ORM_Post
Я боролся с этим в течение нескольких часов и не могу понять, где я иду не так.Должен ли я объявлять присоединения Post_Client внутри клиента и также модели Post?
РЕДАКТИРОВАТЬ
Вот что я хотел:
$post = new ORM_Post();
$results = $post->fetchAll();
$return = array();
foreach ($results as $result){
$row = $post->find($result->id)->current();
$return[$result->id] = $row->toArray();
$return[$result->id]['clients'] = $row->findManyToManyRowset('ORM_Client', 'ORM_Post_Client')->toArray();
}
return $return;
Спасибо за советы, ребята, вы поставили меня на правильный путь