मैंने कुछ महीने पहले ही समस्या का समाधान कर लिया है ... मैं उत्तर पोस्ट कर रहा हूं, इसलिए यह अन्य साथी डेवलपर्स के लिए सहायक हो सकता है ... पीएस। परियोजना Yii 1.1 में लिखी गई थी
सबसे पहले, मेरे HorseController . में निर्दिष्ट निजी सरणी प्रकार चर जहाँ मैं वंशावली रखने जा रहा हूँ:
private $horses = array();
फिर, मैंने फ़ंक्शन लिखा जो डेटाबेस से सभी नोड्स (माता-पिता) प्राप्त करेगा:
public function getParents($id)
{
global $horses;
$horses[] = Horses::model()->findByPk($id)->horse_id;
if($this->loadModel($id)->horse_sire != null && $this->loadModel($id)->horse_dam != null)
{
$this->getParents($this->loadModel($id)->horse_sire);
$this->getParents($this->loadModel($id)->horse_dam);
}
return $horses;
}
फिर, मैंने एक्शन व्यू . को संशोधित किया फ़ंक्शन, जहां डेटाबेस से सभी नोड्स को देखने के लिए पास किया जाएगा
public function actionView($id)
{
$this->horses = $this->getParents($id);
$this->render('view',array(
'model'=>$this->loadModel($id),
'parents'=>$this->horses,
));
}
और अंत में थोड़ा सा UGLY CODE जो वंशावली दिखाएगा (जैसे यह Pedigree Query ) :)
<table>
<?php
$reverse_multiplier = (count($parents)+1)/2;
$last_node_count = 0;
for($i = 0; $i < count($parents); $i++)
{
if($i == 0 && $last_node_count ==1)
echo "<tr>";
echo "<td rowspan='$reverse_multiplier'>";
echo "<a href=".Yii::app()->baseUrl."/index.php/horses/".Horses::model()->model()->findByPk($parents[$i])->horse_id." >";
echo Horses::model()->model()->findByPk($parents[$i])->horse_name;
echo "</a>";
echo "<br/>";
echo Horses::model()->model()->findByPk($parents[$i])->horse_yob;
echo "</td>";
if($reverse_multiplier == 1 || $reverse_multiplier == 0.5)
echo "</tr>";
if($reverse_multiplier == 0.5 && $last_node_count <= (count($parents)+1)/4)
$reverse_multiplier = (count($parents)+1)/8;
else
$reverse_multiplier = $reverse_multiplier/2;
if($last_node_count == (count($parents)+1)/4)
{
$reverse_multiplier = (count($parents)+1)/4;
$last_node_count=0;
}
if($reverse_multiplier == 0.5 || $reverse_multiplier == 1)
$last_node_count++;
}
?>
</table>
और बस हो गया :) आशा है कि यह मददगार था...