Hi there,
Q: How can I show the BootDetailView like this.
Users
name : aa
company : test
department : dep1
section : sec1.1
team : team1.1.1
I’ve 2 tbls (department and user)
This is the department tbl structure
department
id | name | p_id | company_id
1 | dep1 | 0 | 1
2 | dep2 | 0 | 1
3 | sec1.1 | 1 | 1
4 | sec2.1 | 2 | 1
5 | team1.1.1 | 3 | 1
6 | team1.1.2 | 3 | 1
7 | team2.1.1 | 4 | 1
this is the user tbl structure
user
id | name | company_id | team_id
1 | aa | 1 | 5
2 | bb | 1 | 5
3 | cc | 1 | 7
4 | dd | 1 | 6
5 | ee | 1 | 6
I added relationship at user model
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'ranks' => array(self::BELONGS_TO, 'Rank', 'rank_id'),
'companies' => array(self::BELONGS_TO, 'Company', 'company_id'),
'departments' => array(self::BELONGS_TO, 'Department', 'team_id'),
);
}
this view (CGridView is using at index.php (view))
<?php $this->widget('bootstrap.widgets.BootDetailView', array(
'data'=>$model,
'attributes'=>array(
//array('name'=>'id', 'label'=>'ID'),
array('name'=>'login_name', 'label'=>'Name'),
array('name'=>'first_name', 'label'=>'First Name'),
array('name'=>'last_name', 'label'=>'last Name'),
array('name'=>'email', 'label'=>'Email'),
array('name'=>'created', 'label'=>'Created'),
array('name'=>'ranks.name', 'label'=>'Rank'),
array('name'=>'companies.name', 'label'=>'Company'),
array('name'=>'departments.name', 'label'=>'Team'),
//array('name'=>'$department', 'label'=>'department'),
//array('name'=>'company_type_id', 'label'=>'Company Type'),
//array('name'=>'companyTypes.name', 'label'=>'Company Type'),
),
)); ?>
This is Controller
public function actionView($id)
{
$model = $this->loadModel($id);
$sql = 'SELECT id, name FROM rank r WHERE r.id = '. $model->rank_id;
$rank = Yii::app()->db->createCommand($sql)->queryAll();
$sql = 'SELECT id, name FROM company c WHERE c.id = '. $model->company_id;
$company = Yii::app()->db->createCommand($sql)->queryAll();
$dst = $this->getDST($model->team_id);
$this->render('view',array(
'model'=>$model,
'rank'=>$rank[0]['name'],
'company'=>$company[0]['name'],
'department'=>$dst['department'],
'section'=>$dst['section'],
'team'=>$dst['team'],
));
}
public function getDST($team_id) // Getting the Department, Section and Team
{
$records = Department::model()->find('id=:id', array(':id'=>$team_id));
if($records->p_id == 0 )
{
$dst['department'] = $model->team_id;
$dst['section'] = NULL;
$dst['team'] = NULL;
}else{
$records = Department::model()->find('id=:id', array(':id'=>$records->p_id));
if($records->p_id == 0 )
{
$dst['department'] = $records->id;
$dst['section'] = $model->team_id;
$dst['team'] = NULL;
}else{
$dst['section'] = $records->id;
$dst['team'] = NULL;
$records = Department::model()->find('id=:id', array(':id'=>$records->p_id));
if($records->p_id == 0 )
{
$dst['department'] = $records->id;
$dst['team'] = $model->team_id;
}
}
}
return $dst;
}