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; }