Zend DB отношения - PullRequest
       4

Zend DB отношения

0 голосов
/ 04 января 2011

Я создаю приложение в Zend Framework. Теперь я застрял в отношениях таблицы Zend.

У меня есть 2 таблицы. Я установил первичный ключ и соответствующие ссылки в других таблицах. Теперь я хочу соединить две таблицы, используя отношения (не с функциями соединения). Возможно ли это в Zend?

структуры таблиц похожи на приведенные ниже

Schemetable

схема_идентификатора первичный ключ

Scheme_name

Scheme_Desc

Ratestable

rate_id

Scheme_id * внешний ключ ref sche__id *

Частота:

Периоды времени:

Существует схема отношения один-ко-многим ч / б схема и ставки

Я сделал кодирование в классах моделей

Scheme.php

class Scheme extends Zend_Db_Table_Abstract {


 protected $_name = 'schemetable';

 protected $_dependentTables = array('rates');
}

Rates.php

class Rates extends Zend_Db_Table_Abstract {


 protected $_name = 'ratetable';

 protected $_referenceMap = array(
   'Scheme' => array(
   'columns' => array('scheme_id'),  
   'refColumns' => array('scheme_id'), 
   'refTableClass' => 'Scheme',  
  ),
 );
}

Как я могу получить каждую схему и соответствующие тарифы?

Заранее спасибо.

1 Ответ

2 голосов
/ 05 января 2011

Пожалуйста, см. документы:

http://framework.zend.com/manual/en/zend.db.table.relationships.html

Получение зависимого набора строк

Если у вас есть объект Row в результате запроса на родительскую таблицу, вы можете извлекать строки из зависимых таблиц, которые ссылка на текущую строку. Использовать Метод:

$row->findDependentRowset($table);

Пример # 4 Извлечение зависимых наборов строк используя магический метод

В этом примере показано нахождение зависимых Наборы строк эквивалентны тем, что в предыдущие примеры. В этом случае приложение использует магический метод вызов вместо указания таблица и правило как строки.

  $accountsTable = new Accounts();
  $accountsRowset = $accountsTable->find(1234);
  $user1234 = $accountsRowset->current();

  // Use the default reference rule
  $bugsReportedBy = $user1234->findBugs();

  // Specify the reference rule
  $bugsAssignedTo = $user1234->findBugsByEngineer();

Извлечение родительской строки

Если у вас есть объект Row в результате запроса на зависимую таблицу, вы можно получить строку в родительском на который ссылается зависимая строка. использование метод:

$row->findParentRow($table);

Этот пример показывает поиск родительских строк эквивалентно тем, что в предыдущем Примеры. В этом случае приложение использует магический метод вызов вместо указания таблица и правило как строки.

  $bugsTable = new Bugs();
  $bugsRowset = $bugsTable->fetchAll(array('bug_status = ?', 'NEW'));
  $bug1 = $bugsRowset->current();

  // Use the default reference rule
  $reporter = $bug1->findParentAccounts();

  // Specify the reference rule
  $engineer = $bug1->findParentAccountsByEngineer();
...