1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
<?php
/**
*
* Permet d'avoir une table jointe en Rowset de resultat
*
*/
class TPapa extends Zend_Db_Table_Abstract
{
protected $_name = 'papa';
protected $_primary = 'id';
protected $_rowClass = 'RPapa';
public function getPapasAvecEnfants()
{
$papas = $this->fetchAll();
$TEnfants = new TEnfants();
$enfants = $TEnfants->fetchAll();
foreach($papas as $pkey=>$papa) {
$rowSet = new RowsetSpecial(
array(
'table' => $TEnfants,
'tableClass' => get_class($TEnfants)
));
foreach ($enfants as $ekey=>$enfant) {
if ($enfant->id_papa == $papa->id) {
$rowSet->offsetSet($ekey, $enfant);
}
}
$papa->enfants = $rowSet;
$papas->offsetSet($pkey, $papa);
}
return $papas;
}
}
class RPapa extends Zend_Db_Table_Row_Abstract
{
/**
*
* @var Zend_Db_Table_Rowset_Abstract
*/
public $enfants = null;
}
class TEnfants extends Zend_Db_Table_Abstract
{
protected $_name = 'enfant';
protected $_primary = 'id';
}
class RowsetSpecial extends Zend_Db_Table_Rowset
{
public function __construct($options = array()) {
parent::__construct($options);
}
public function offsetSet($offset, $value) {
$this->_data[$offset] = $value;
}
}
$TPapa = new TPapa();
foreach ($TPapa->getPapasAvecEnfants() as $key => $papa) {
echo '* '.$papa->nom . '<br />';
foreach ($papa->enfants as $enfant) {
echo '*** ' . $enfant->nom . '<br />';
}
} |