Yii2连接多个表
我有一张桌子Yii2连接多个表,yii2,yii2-model,Yii2,Yii2 Model,我有一张桌子 CREATE TABLE IF NOT EXISTS `register` ( `id` int(9) NOT NULL AUTO_INCREMENT, `student_id` varchar(15) NOT NULL, `title` varchar(100) NOT NULL, `name` varchar(250) NOT NULL, `email` varchar(50) NOT NULL, `gsm` varchar(15) NOT NULL,
CREATE TABLE IF NOT EXISTS `register` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`student_id` varchar(15) NOT NULL,
`title` varchar(100) NOT NULL,
`name` varchar(250) NOT NULL,
`email` varchar(50) NOT NULL,
`gsm` varchar(15) NOT NULL,
`gender` varchar(10) NOT NULL,
`birth_date` date NOT NULL,
`department_id` int(2) NOT NULL,
`specialization` varchar(150) NOT NULL,
`level_id` int(2) NOT NULL,
`reason` varchar(2000) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
它们与两个表部门和级别有关
CREATE TABLE IF NOT EXISTS `level` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`level` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
及
我已将注册模式中的关系作为
public function getDepartments() {
return $this->hasOne(app\models\Department::className(), ['id' => 'department_id']);
}
但是在view.php(视图文件)中,当我使用
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'student_id',
'name',
'email:email',
'gsm',
'gender',
'birth_date',
'department' ,
'specialization',
'level',
'reason',
],
]) ?> ,
,
部门显示为“未设置”。
同时打印($model);?>显示
[部门]=>
(即,空白)。这里有什么问题?使用$model->relationName->field\u name
:
[
'attribute' => 'department_id',
'value' => $model->departments->department
],
并在注册模型中添加部门模型。最好将getDepartments更改为getDepartment,因为这是一个hasOne关系
[
'attribute' => 'department_id',
'value' => isset($model->department) ? $model->department->department : ''
]
使用
['attribute'=>'department\u id','value'=>$model->departments->department]
。如果没有,则显示您的查询。它显示类“app\models\app\models\Department”未找到这是register
Class的视图文件吗?是的,错误指向公共函数getDepartments(){return$this->hasOne(app\models\Department::className(),['id'=>'Department\u id']);}在register model中添加部门模型的路径。
[
'attribute' => 'department_id',
'value' => isset($model->department) ? $model->department->department : ''
]