Hello Everyone,
I have a few database tables that I need to relate to each other. I
have it setup like this
isp_partners (primary key isp_id)
isp_partners_aux (primary key isp_id, related by isp_id)
keywords (primary key kw_id, related by ws_id)
websites (primary key ws_id, related by isp_id)
Now I have it working for the websites and keywords but cannot get the
isp_partners_aux to work. The issue seems to be that when I do the
findDependantRowset it does not get any data from the isp_partners_aux
table, rather it only contains the data from the isp_partners table.
There is only 1 row in each table that will match. The aux table is
just an external table that holds data about isp_partners such as the
username, etc. Below is my controller followed by my model classes
and then the output.
<?php
class KeywordsController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
$this->view->headTitle('Keyword Management', 'APPEND');
$partners = new Model_DbTable_ISPPartners();
$partners_aux = new Model_DbTable_ISPPartnersAux();
$websites = new Model_DbTable_ISPWebsites();
$keywords = new Model_DbTable_ISPKeywords();
$partner = $partners->fetchRow("code = 'red'");
$results = $partner->findManyToManyRowset($keywords,
$websites);
$aux_data = $partner->findDependentRowset($partners_aux);
//echo '<pre>'.print_r($results, true).'</pre>'; exit;
echo '<pre>'.print_r($aux_data, true).'</pre>'; exit;
$this->view->results = $results;
}
}
<?php
/**
* ISPPartners
*
* @author jcrawford
* @version
*/
class Model_DbTable_ISPPartners extends Zend_Db_Table_Abstract {
/**
* The default table name
*/
protected $_name = 'isp_partners';
protected $_primary = array('isp_id');
protected $_dependantTables = array('Model_DbTable_ISPWebsites',
'Model_DbTable_ISPPartnersAux');
}
<?php
class Model_DbTable_ISPPartnersAux extends Zend_Db_Table_Abstract
{
/**
* The default table name
*/
protected $_name = 'isp_partners';
protected $_primary = array('isp_id');
protected $_referenceMap = array(
'Partner' => array(
'columns' => array('isp_id'),
'refTableClass' =>
'Model_DbTable_ISPPartners',
'refColumns' => array('isp_id')
)
);
}
<?php
// application/models/DbTable/Guestbook.php
/**
* This is the DbTable class for the guestbook table.
*/
class Model_DbTable_ISPKeywords extends Zend_Db_Table_Abstract
{
/** Table name */
protected $_name = 'isp_keywords';
protected $_primary = array('kw_id');
protected $_dependantTables = array('Model_DbTable_ISPWebsites');
protected $_referenceMap = array(
'Websites' => array(
'columns' => array('ws_id'),
'refTableClass' =>
'Model_DbTable_ISPWebsites',
'refColumns' => array('ws_id')
)
);
}
<?php
/**
* ISPWebsites
*
* @author jcrawford
* @version
*/
class Model_DbTable_ISPWebsites extends Zend_Db_Table_Abstract {
/**
* The default table name
*/
protected $_name = 'isp_websites';
protected $_primary = array('ws_id');
protected $_referenceMap = array(
'Keywords' => array(
'columns' => array('ws_id'),
'refTableClass' =>
'Model_DbTable_ISPKeywords',
'refColumns' => array('ws_id')
),
'Partner' => array(
'columns' => array('isp_id'),
'refTableClass' =>
'Model_DbTable_ISPPartners',
'refColumns' => array('isp_id')
)
);
}
OUTPUT OF $results
[0] => Array
(
[ws_id] => 1
[navigation_url] => http://www.namespaceinc.com/
[isp_id] => 8
[enabled] => 1
[kw_id] => 3
[keyword] => nsg-home
[start_date] => 2009-07-01 00:00:00
[end_date] => 2009-07-31 00:00:00
)
[1] => Array
(
[ws_id] => 2
[navigation_url] =>
http://www.namespacestrategy.com/products.htm
[isp_id] => 8
[enabled] => 1
[kw_id] => 2
[keyword] => nsg-products
[start_date] => 2009-07-01 00:00:00
[end_date] => 2009-07-31 00:00:00
)
OUTPUT of $aux_data
[0] => Array
(
[isp_id] => 8
[nwp_id] => 8
[code] => RED
[description] => Paxfire
[enabled] => 1
[fallback_uri] =>
[linkshare_code] => 8
[cj_code] => 1209416
[ebay_code] => 5335857452
)