Borland.C
شنبه 15 خرداد 1395, 07:46 صبح
2تا جدول دارم که در یکیش آی دی افراد و در دیگری مشخصات رو نگهداری میکنم
وقتی می خوام در گرید ویو نمایش بدم فیلدهای جدول دوم رو نشون نمیده و (not set) میزنه
model:
public function getProfile()
{
return $this->hasOne(Profile::className(), ['id' => 'profile']);
}
Controller:
$dataProvider = new ActiveDataProvider([
'query' => Person::find()->joinWith("profile")->where(['family'=>$id]),
]);
//----------- OR ---------------------------
$dataProvider = new ActiveDataProvider([
'query' => Person::find()->with("profile")->where(['family'=>$id]),
]);
view:
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'profile.fname',
[
'attribute' => 'profile',
'value' => 'profile.id'
],
],
]),
table person:
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` int(11) DEFAULT NULL,
`family` int(11) DEFAULT NULL,
`profile` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `family_idx` (`family`),
KEY `profile_idx` (`profile`),
CONSTRAINT `family` FOREIGN KEY (`family`) REFERENCES `family` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `profile` FOREIGN KEY (`profile`) REFERENCES `profile` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
table profile:
CREATE TABLE `profile` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fname` varchar(45) COLLATE utf8_bin DEFAULT NULL,
`lname` varchar(45) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
وقتی می خوام در گرید ویو نمایش بدم فیلدهای جدول دوم رو نشون نمیده و (not set) میزنه
model:
public function getProfile()
{
return $this->hasOne(Profile::className(), ['id' => 'profile']);
}
Controller:
$dataProvider = new ActiveDataProvider([
'query' => Person::find()->joinWith("profile")->where(['family'=>$id]),
]);
//----------- OR ---------------------------
$dataProvider = new ActiveDataProvider([
'query' => Person::find()->with("profile")->where(['family'=>$id]),
]);
view:
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'profile.fname',
[
'attribute' => 'profile',
'value' => 'profile.id'
],
],
]),
table person:
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` int(11) DEFAULT NULL,
`family` int(11) DEFAULT NULL,
`profile` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `family_idx` (`family`),
KEY `profile_idx` (`profile`),
CONSTRAINT `family` FOREIGN KEY (`family`) REFERENCES `family` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `profile` FOREIGN KEY (`profile`) REFERENCES `profile` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
table profile:
CREATE TABLE `profile` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fname` varchar(45) COLLATE utf8_bin DEFAULT NULL,
`lname` varchar(45) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;