我想要從兩個表中獲取數據comments
,users
。
comments
有users
yii2:無法從兩個有活動記錄的表中獲取數據
public function getUser()
{
return $this->hasOne(Users::className(), ['user_id' => 'user_id']);
}
我想從comments
表和uses.user_name
comments.comment_id
,comments.comment_content
,comments.user_id
得到,users.user_display_name
從users
表hasOne
關係在gridview
插件使用。
我使用
$res = Comments::find()
->select([
'comments.comment_id',
'comments.comment_content',
'comments.user_id',
'users.user_id',
'users.user_display_name',
'users.user_name',
])
->innerJoinWith('user')
->all();
這個代碼得到comments
場,但我不能讓users.user_name
,users.user_display_name
從數據庫。
我應該怎麼做?
注意:數據庫中的用戶表是users
,但是當我使用Gii創建模型時,關係方法聲明爲getUser()
,我不知道爲什麼。
更新1:
comments
表:
DROP TABLE IF EXISTS `comments`;
CREATE TABLE `comments` (
`comment_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`comment_content` text NOT NULL,
`comment_approved` enum('no','yes') NOT NULL DEFAULT 'no',
`comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`comment_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
`sms_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`comment_id`),
KEY `fk_comment_sms_id` (`sms_id`),
KEY `fk_commetn_user_id` (`user_id`),
CONSTRAINT `fk_comment_sms_id` FOREIGN KEY (`sms_id`) REFERENCES `sms` (`sms_id`),
CONSTRAINT `fk_commetn_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
users
表:
CREATE TABLE `users` (
`user_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(60) NOT NULL DEFAULT '',
`user_pass` varchar(64) NOT NULL DEFAULT '',
`user_level` int(11) NOT NULL DEFAULT '1',
`user_email` varchar(100) NOT NULL DEFAULT '',
`user_display_name` varchar(250) NOT NULL DEFAULT '',
`user_phone_number` varchar(11) NOT NULL,
`user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`user_activation_key` varchar(60) NOT NULL,
`user_status` enum('active','deactive','delete') NOT NULL DEFAULT 'deactive',
PRIMARY KEY (`user_id`),
UNIQUE KEY `u_user_sign` (`user_name`) USING BTREE,
UNIQUE KEY `u_user_email` (`user_email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
數據? – Alex 2014-11-05 15:15:11
$ res是模型對象(我認爲),我使用'foreach($ res作爲$ comment)',然後通過字段名稱獲得值:'$ comment-> comment_content'。小部件自動使用它。 – 123 2014-11-05 15:17:46
你有沒有得到'$ comment-> user-> user_name' – Alex 2014-11-05 15:22:52