Zend_DBTable отношения - PullRequest
       9

Zend_DBTable отношения

1 голос
/ 10 марта 2011

Я знаю, что вопрос, конечно, задавался несколько раз, но я не могу найти (понятный) ответ на него.

У меня есть таблицы 'spot' & 'members' и таблица отношений 'spotmembers'.

В Zend Framework я использую Zend_Db_Table, но мне не удается получить объекты из моих отношений в моих запросах.

Вот мои занятия:

class Model_DbTable_Member extends Zend_Db_Table {
protected $_name = 'members';
protected $_primary = 'id';
protected $_dependentTables = array('Model_DbTable_SpotMember');

class Model_DbTable_SpotMember extends Zend_Db_Table {
protected $_name = 'spotmembers';
protected $_primary = 'id';
protected $_referenceMap = array(
    'Spot' => array(
        'columns' => 'id_spot',
        'refTableClass' => 'Model_DbTable_Spot',
        'refColumns' => 'id'
    ),
    'Member' => array(
        'columns' => 'id_member',
        'refTableClass' => 'Model_DbTable_Member',
        'refColumns' => 'id'
    )
);

Я хотел бы сделать запрос, чтобы получить объекты Member, связанные с объектом Spot, есть идеи о том, как это сделать?

Привет.

1 Ответ

2 голосов
/ 10 марта 2011

Вы можете попробовать это для простого отношения OneToMany :

$Spot = new Model_DbTable_SpotMember();
$SpotDB = $Spot->find($id)->current();

$Members = $SpotDB->findParentModel_DbTable_Member();
Zend_Debug::dump($Members->toArray();

Для отношения ManyToMany , что-то вроде этого:

$Members = $Spot->findModel_DbTable_MemberViaModel_DbTable_SpotMember('MemberName','MemberInfo');
Zend_Debug::dump($Members->toArray();

Всю документацию можно найти здесь: http://framework.zend.com/manual/en/zend.db.table.relationships.html

Пример № 9:

$bugsTable = new Bugs(); // Your "Spot"
$bugsRowset = $bugsTable->find(1234); // Loading "Spot" and retreive RowSet
$bug1234 = $bugsRowset->current(); // Retrieve

$productsRowset = $bug1234->findManyToManyRowset('Products', // Your "Members" table
                                             'BugsProducts', // YOur "relation" table
                                             'Bug'); // The crurent table "Spot"
...