Tôi đang cố gắng liệt kê một số dữ liệu qua tiện ích Kartik GridView
trong yii2
bằng cách sử dụng các mối quan hệ. tôi có các bảngTHAM GIA nhiều bảng sử dụng các mối quan hệ trong 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
bảng có liên quan đến designation_group
bởi designations.designation_group_id
. designations
bảng sẽ có một hoặc nhiều giá trị được phân tách bằng dấu phẩy, của designation_group.id
.
designations
bảng liên quan đến bảng nhân viên theo số staffs.designation_id =designations.id
. Trong Staffs
mẫu tôi đã thêm các mối quan hệ như thế này
public function getDesignations() {
return $this->hasOne(Designations::className(), ['id' => 'designation_id']);
}
và đang làm việc hoàn hảo. Nhưng mối quan hệ cho designation_group
Tôi đã thử như sau:
public function getDesgroupstaffs(){
return $this->hasOne(Designations::className() , ['id' => 'id'])
->from(Designationgroup::tableName()) ;
}
Nhưng nó không cho kết quả mong đợi. Bạn có thể tham gia bảng designation_group
sao cho tất cả nhóm chỉ định được liên kết với nhân viên cũng có thể được hiển thị? Tôi muốn hiển thị như, cột đầu tiên của chế độ xem lưới sẽ là chỉ định, trong khi bộ lọc của cùng một cột nên là DesignationGroup.group_name. SO nếu bất kỳ group_name nào được chọn, nó sẽ hiển thị dữ liệu của các nhân viên liên quan đến tên nhóm đó
sử dụng yii2 joinWidth như ... 'Mẫu :: tìm() -> joinWith ([ 'Quan hệ Tên']) -> tất cả();' tham khảo liên kết này [Tham gia với quan hệ] (http://www.yiiframework.com/doc-2.0/guide-db-active-record.html) – vishuB
Mối quan hệ không Desgroupstaffs cung cấp cho nhóm chỉ định – user7282
mối quan hệ này là sai '[ 'id' => 'id'] 'trong' getDesgroupstaffs() 'hàm – vishuB