我正在尝试使用关系通过Kartik GridView
小部件列出一些数据。yii2
我有这些桌子
staffs
CREATE TABLE IF NOT EXISTS `staffs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
`department_id` int(11) DEFAULT NULL,
`designation_id` int(11) DEFAULT NULL,
`username` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
`emailid` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
`staffrights` tinyint(2) DEFAULT '0',
`staffstatus` tinyint(2) DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
designations
CREATE TABLE IF NOT EXISTS `designations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`designname` varchar(150) NOT NULL,
`designation_group_id` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
designation_group
CREATE TABLE IF NOT EXISTS `designation_group` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`group_name` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
designations
表与 designation_group
by相关designations.designation_group_id
。designations
table 将具有一个或多个以逗号分隔的值 of designation_group.id
。
designations
表与员工表相关联staffs.designation_id =designations.id
。在Staffs
模型中,我添加了这样的关系
public function getDesignations() {
return $this->hasOne( Designations::className(), ['id' => 'designation_id']);
}
并且工作完美。但designation_group
我试过这样的关系:
public function getDesgroupstaffs(){
return $this->hasOne(Designations::className() , ['id' => 'id'])
->from(Designationgroup::tableName() ) ;
}
但它没有给出预期的结果。如何连接designation_group
表格,以便同时显示与员工关联的所有指定组?我想显示,网格视图的第一列将是名称,而同一列的过滤器应该是 DesignationGroup.group_name。因此,如果选择了任何 group_name ,它将显示与该组名关联的人员数据