2011-01-04 1 views
0

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

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

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

Schemetable

scheme_id первичный ключ

Scheme_name

Scheme_Desc

Ratestable

rate_id

Scheme_id * Внешний ключ исх scheme_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', 
), 
); 
} 

Как я могу извлекающих каждую схему и соответствующие им ставки?

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

+0

почему не использовать "(не с функциями присоединиться)"? –

+0

Вы сможете найти решение там http://stackoverflow.com/questions/4433910/hand-made-queries-vs-finddependentrowset –

ответ

2

Пожалуйста, см DOCS:

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();